当前位置: 首页 > news >正文

Python轮廓追踪【OpenCV形态学操作】

文章目录

    • 概要
    • 代码
    • 运行结果

概要

一些理论知识

OpenCV形态学操作理论1
OpenCV形态学操作理论2
OpenCV轮廓操作|轮廓类似详解

代码

代码如下,可以直接运行

import cv2 as cv# 定义结构元素
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
# print kernelcapture = cv.VideoCapture(0)
print (capture.isOpened())
ok, frame = capture.read()
lower_b = (65, 43, 46)
upper_b = (110, 255, 255)height, width = frame.shape[0:2]
screen_center = width / 2
offset = 50while ok:# 将图像转成HSV颜色空间hsv_frame = cv.cvtColor(frame, cv.COLOR_BGR2HSV)# 基于颜色的物体提取mask = cv.inRange(hsv_frame, lower_b, upper_b)mask2 = cv.morphologyEx(mask, cv.MORPH_OPEN, kernel)mask3 = cv.morphologyEx(mask2, cv.MORPH_CLOSE, kernel)# 找出面积最大的区域contours,_ = cv.findContours(mask3, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)maxArea = 0maxIndex = 0for i, c in enumerate(contours):area = cv.contourArea(c)if area > maxArea:maxArea = areamaxIndex = i# 绘制cv.drawContours(frame, contours, maxIndex, (255, 255, 0), 2)# 获取外切矩形x, y, w, h = cv.boundingRect(contours[maxIndex])cv.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)# 获取中心像素点center_x = int(x + w / 2)center_y = int(y + h / 2)cv.circle(frame, (center_x, center_y), 5, (0, 0, 255), -1)# 简单的打印反馈数据,之后补充运动控制if center_x < screen_center - offset:print ("turn left")elif screen_center - offset <= center_x <= screen_center + offset:print ("keep")elif center_x > screen_center + offset:print ("turn right")cv.imshow("mask4", mask3)cv.imshow("frame", frame)cv.waitKey(1)ok, frame = capture.read()

运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

Python轮廓追踪【OpenCV形态学操作】

文章目录 概要代码运行结果 概要 一些理论知识 OpenCV形态学操作理论1 OpenCV形态学操作理论2 OpenCV轮廓操作|轮廓类似详解 代码 代码如下&#xff0c;可以直接运行 import cv2 as cv# 定义结构元素 kernel cv.getStructuringElement(cv.MORPH_RECT, (3, 3)) # print kern…...

安全狗安装

安装waf 关闭apache程序及httpd.exe进程; 运行cmd&#xff0c;cd进入apache/bin文件夹目录&#xff0c; 执行httpd.exe -k install -n apache2.4.39; 启动apache,启动phpstudy 安全狗安装服务名称填写apache2.4.39; 安装安全狗之后就会提示报错 可以设备黑白名单...

HTTP发起请求与收到响应的大致过程

可以《《透视 HTTP 协议》Windows 10 搭建最小实验环境》搭建环境&#xff0c;之后才能进行下边的操作。 1.鼠标左键点击两下www目录下的start.bat批处理文件。 2.打开Wireshark&#xff0c;然后选择Adapter for loopback traffic capture。 3.然后把tcp.port 80 || udp.…...

c++继承的小细节

子类不会继承父类的构造函数&#xff0c;但是会调用父类无参数的构造函数。调用父类构造方法&#xff0c;可以在子类的构造函数后加冒号和要调用的构造方法。子类转化为父类&#xff0c;或者父类转换为子类后&#xff0c;虚函数列表也被转换。...

【分享】7-Zip压缩包的密码可以取消吗?

7-Zip压缩包设置了“密码保护”&#xff0c;后面又不想要了&#xff0c;可以取消吗&#xff1f; 首先&#xff0c;我们要分两种情况来看&#xff0c;是记得密码&#xff0c;但不想每次打开压缩包都要输入密码&#xff0c;所以想取消密码&#xff0c;还是把密码忘记了所以想取消…...

learning rate

这里写目录标题 learning rate单一固定&#xff08;one-size-fits-all&#xff09;的学习率Model训练到驻点很困难&#xff08;学习率太大不能收敛&#xff0c;学习率太小收敛太慢&#xff09; 如何客制化学习率&#xff1f;- 引入参数σσ常见的计算方式 - Root mean square&a…...

小型气象站数据采集网关准确监测雨量和风速

随着科技的发展&#xff0c;人们对天气信息的需求也愈发增加。天气是每个人生活中不可或缺的一部分&#xff0c;了解准确的天气信息有助于我们做出合理的决策和安排。在小型气象站数据采集中&#xff0c;一个关键的环节是监测雨量和风速。而小型气象站数据采集网关的出现&#…...

C++常见容器实现原理

引言 如果有一天&#xff01;你骄傲离去&#xff01;&#xff08;抱歉搞错了&#xff09;如果有一天&#xff0c;你在简历上写下了这段话&#xff1a; 那么你不得不在面试前实现一下STL常见的容器了。C的常用容器有&#xff1a;vector、string、deque、stack、queue、list、se…...

Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数

一、聚合函数 SQL中提供了一些可以对查询的记录的列进行计算的函数——聚合函数 1.count&#xff08;&#xff09; 统计函数&#xff0c;统计满足条件的指定字符的值的个数 统计表中rebirth_mood个数 select count(列名) from 表名; #统计表中rebirth_namelcl的个数 select …...

使用Linux JumpServer 堡垒机进行远程访问

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…...

postgresql14管理(五)-tablespace

基本概念 表空间tablespace在postgresql中&#xff0c;表示数据库对象&#xff08;比如表或索引&#xff09;的存放目录。当表被访问时&#xff0c;系统通过表空间定位到对应数据文件所在的位置。 优势&#xff1a; 1、如果数据库集群所在的初始磁盘分区或磁盘卷的空间不足&a…...

Echarts-3D柱状图

通过Echarts的echarts.graphic.extendShape实现真正的3D柱状图 思路就是通过调整顶部面(CubeTop)、左侧面(CubeLeft)、右侧面(CubeRight)来决定柱状图的宽窄 建议优先调整顶部面&#xff0c;一般c1不需要动 // echarts-3D-bar-config.js import Vue from "vue";cons…...

vue中组件传值 引用页面与组件页面绑定参数 vue省市地区街道级联选择组件

在做后台的时候需要用到地区级联选择器 然后就自己封装了一个 其中 组件页面中 export default {props: { //使用value接收引用页面的绑定值value: [String]},watch: {value: {handler(val) {//val 以及 this.value 都可以获取到引用页面的绑定值},deep: true,immediate: tr…...

componentDidMount只执行一次的解决方法

一、前言 最近写react antd前端项目&#xff0c;需要页面加载时调用下查询列表的接口。 于是在componentDidMount方法里这样写了&#xff1a; componentDidMount() {const {dispatch,MyJS: { queryPara },} this.props;//这个调用接口查询列表dispatch({ type: MyJS/fetch, …...

React之diff原理

一、是什么 跟Vue一致&#xff0c;React通过引入Virtual DOM的概念&#xff0c;极大地避免无效的Dom操作&#xff0c;使我们的页面的构建效率提到了极大的提升 而diff算法就是更高效地通过对比新旧Virtual DOM来找出真正的Dom变化之处 传统diff算法通过循环递归对节点进行依…...

ElasticSearch中关于Nasted嵌套查询的介绍:生动案例,通俗易懂,彻底吸收

题注&#xff1a;随着对ES接触的越来越深入&#xff0c;发现此前了解的ES知识点有点单薄&#xff0c;特此寻来ES知识点汇总成的一个思维导图&#xff0c;全面了解自己掌握了哪些&#xff0c;未掌握哪些。此外&#xff0c;作者斌并没有足够的精力学习ES全部的知识点&#xff0c;…...

系列二、Spring的优缺点是什么

一、Spring的优缺点是什么 1.1、优点 集中管理对象&#xff0c;降低对象和对象之间的耦合性&#xff0c;方便维护对象&#xff1b;在不修改代码的情况下可以对业务代码进行增强&#xff0c;减少重复代码&#xff0c;提高开发效率&#xff0c;方便维护&#xff1b;提高开发效率…...

ESP32网络开发实例-HTTP-GET请求

HTTP-GET请求 文章目录 HTTP-GET请求1、HTTP GET请求2、软件准备3、硬件准备4、代码实现4.1 向OpenWeatherMap请求天气数据4.2 ThingSpeak 中的 ESP32 HTTP GET(更新值)在本文中,我们将介绍如使用ESP32向 ThingSpeak 和 openweathermap.org 等常用 API 发出 HTTP GET 请求。…...

PHP:json_encode和json_decode用法

json_encode 函数用于将 PHP 数据结构转换为 JSON 字符串。json_decode 函数用于将 JSON 字符串转换为 PHP 数据结构。 // 将 PHP 数据结构转换为 JSON 字符串 $data ["name" > "John","age" > 25,"city" > "New York&…...

Kafka-Java二:Spring配置kafka消息发送端的缓冲区

一、涉及到的组件概念 1.1、缓冲区 1.2、本地线程 1.3.本地线程消息推送策略 二、各组件的解释参见代码注释 // 配置消息的缓冲区/** 设置消息发送者端的缓冲区大小&#xff0c;如果设置了缓冲区&#xff0c;消息会先发送到缓冲区&#xff0c;可以提供发送性能* 默认大小是32…...

RAG 系列(十七):Agentic RAG——让 Agent 主导检索过程

Pipeline RAG 的沉默失败 前面十几篇一直在优化一件事:怎么让检索结果更好。更好的分块、更精准的排序、更聪明的问法、CRAG 纠偏、Graph RAG 关系遍历…… 但有一件事始终没变:无论检索结果好不好,都会被传给 LLM 生成答案。 Pipeline RAG 的流程是线性的、固定的: 问…...

从myplaces.shp到专题地图:手把手教你用QGIS C++ API实现点要素分级渲染

从myplaces.shp到专题地图&#xff1a;QGIS C API实现点要素分级渲染实战指南 当我们需要在桌面GIS应用中直观展示气象站降雨量、城市人口密度或商业网点销售额等连续型空间数据时&#xff0c;分级色彩渲染是最有效的可视化手段之一。本文将深入探讨如何利用QGIS强大的C API&am…...

解锁你的音乐宝藏:ncmdump让网易云音乐文件自由播放

解锁你的音乐宝藏&#xff1a;ncmdump让网易云音乐文件自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 当你精心收藏的网易云音乐只能在特定客户端播放时&#xff0c;那种被束缚的感觉是否让你感到无奈&#xff1f;想象一下…...

高效浏览器视频嗅探工具:猫抓扩展完整使用指南

高效浏览器视频嗅探工具&#xff1a;猫抓扩展完整使用指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓&#xff08;Cat-Catch&#xff09;…...

从零构建可定制对话系统:模块化架构与RAG实战指南

1. 项目概述&#xff1a;从零构建一个可定制的对话系统最近在折腾一个挺有意思的东西&#xff0c;我把它叫做“定制化聊天系统”。起因很简单&#xff0c;市面上现成的聊天机器人&#xff0c;无论是开源的还是商业的&#xff0c;总感觉差了那么点意思。要么是功能太臃肿&#x…...

Windows Cleaner终极指南:三步告别C盘爆红,让电脑运行如飞!

Windows Cleaner终极指南&#xff1a;三步告别C盘爆红&#xff0c;让电脑运行如飞&#xff01; 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为Windows系统…...

Gitclaw:封装复杂Git操作,提升开发效率的命令行工具

1. 项目概述&#xff1a;一个为Git操作注入“爪牙”的命令行工具如果你和我一样&#xff0c;日常开发工作重度依赖Git&#xff0c;那你肯定也经历过这样的时刻&#xff1a;面对一个需要多步操作才能完成的复杂Git任务&#xff0c;比如清理多个已合并的分支、批量重写提交历史中…...

符号链接批量管理工具 linko:声明式配置与自动化实践

1. 项目概述与核心价值最近在折腾一些自动化脚本和工具链&#xff0c;发现一个挺有意思的仓库&#xff1a;monsterxx03/linko。乍一看这个名字&#xff0c;你可能会有点懵&#xff0c;这到底是干嘛的&#xff1f;是链接管理工具&#xff0c;还是某种网络代理的客户端&#xff1…...

Docker Compose编排微服务

Docker Compose编排微服务 引言 Docker Compose是Docker官方提供的容器编排工具&#xff0c;用于定义和运行多容器Docker应用。通过Compose&#xff0c;可以使用YAML文件定义服务、网络、数据卷等资源&#xff0c;然后通过简单的命令启动和停止整个应用。Docker Compose特别适合…...

OCT-X算法:早期胃癌AI检测的技术突破与应用

1. OCT-X算法&#xff1a;早期胃癌AI检测的技术突破在医疗影像分析领域&#xff0c;胃癌早期检测一直面临着巨大挑战。传统内窥镜检查依赖医生经验判断&#xff0c;存在主观性强、漏诊率高等问题。我们团队开发的OCT-X&#xff08;One Class Twin Cross Learning&#xff09;算…...