Opencv颜色追踪

废话不多说直接上代码!!

# 这是一个示例 Python 脚本。
import cv2
import numpy as npdef track_object():# 打开摄像头外接cap = cv2.VideoCapture(0)while True:# 读取摄像头帧# ret(Return Value)是一个布尔值,表示是否成功读取了一帧图像。如果成功读取,ret为True;否则,为False。# frame是读取到的图像帧。ret, frame = cap.read()# 将图像转换为HSV颜色空间。cv2.COLOR_BGR2HSV参数表示将BGR格式转换为HSV格式。#BGR(蓝绿红)格式的图像帧转换为HSV(色相、饱和度、明度)格式。HSV颜色空间更适合进行颜色相关的图像处理。hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)# 定义追踪的颜色范围(此处以蓝色物体为例,可根据需要进行微调)#第一个参数:色相(Hue):可以尝试在0179之间选择一个适当的范围。。#第二个参数:饱和度(Saturation):通常在较高的范围,例如1255之间。#第三个参数:明度(Value):根据具体场景,可以在较高的范围,例如0255之间。lower_color = np.array([90, 50, 50])upper_color = np.array([130, 255, 255])# 根据颜色范围创建掩膜。#用于过滤出在指定颜色范围内的部分。这个掩码可以用于后续的图像处理,例如颜色分割或物体识别。mask = cv2.inRange(hsv, lower_color, upper_color)#开运算(Opening):先进行腐蚀,然后进行膨胀。它有助于去除小的噪点和分离相邻的物体。#闭运算(Closing):先进行膨胀,然后进行腐蚀。它有助于填充物体中的小孔,连接相邻的物体。mask = cv2.erode(mask, None, iterations=2)   # 对掩膜进行腐蚀处理,以去除噪声  。iterations为次数mask = cv2.dilate(mask, None, iterations=2)   #膨胀处理# 寻找物体的轮廓#cv2.findContours函数来找到二值图像中的轮廓。#参数:#参数1:输  入的二值图像。通常是经过阈值处理后的图像,例如在颜色过滤之后生成的掩码。#参数2(cv2.RETR_EXTERNAL):轮廓的检索模式。有几种模式可选,常用的包括:# cv2.RETR_EXTERNAL:只检测最外层的轮廓。# cv2.RETR_LIST:检测所有的轮廓并保存到列表中。# cv2.RETR_CCOMP:检测所有轮廓并将其组织为两层的层次结构。# cv2.RETR_TREE:检测所有轮廓并重构整个轮廓层次结构。# 参数3(cv2.CHAIN_APPROX_SIMPLE):轮廓的近似方法。有两种方法可选,常用的有:# cv2.CHAIN_APPROX_SIMPLE:压缩水平、垂直和对角线方向上的所有轮廓,只保留端点。# cv2.CHAIN_APPROX_NONE:保留所有的轮廓点。#返回值:      contours:包含检测到的轮廓的列表。每个轮廓由一系列点组成。
#                   _(下划线):层次信息,通常在后续处理中可能会用到。在这里,我们通常用下划线表示我们不关心这个返回值。contours, _ = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 初始化物体中心,center是一个包含两个整数的元组,表示轮廓的质心坐标center = Noneif len(contours) > 0: #说明检测到轮廓# 找到面积最大的轮廓的点集,从轮廓列表中,计算出面积最大的轮廓的点集。contourArea是计算轮廓面积的函数。#max的第一个参数:可以为一个列表。第二个参数:固定为   key=功能函数。#作用:从列表中遍历成员实现功能函数。max_contour = max(contours, key=cv2.contourArea)# 计算物体的最小外接圆,参数为:轮廓的点集#(x, y):外接圆的圆心坐标。#radius:外接圆的半径。((x, y), radius) = cv2.minEnclosingCircle(max_contour)# 计算物体的中心坐标#M为字典,里面存着 二值图像矩阵信息M = cv2.moments(max_contour)#m00 = moments['m00'] # 面积#cx = moments['m10'] / moments['m00'] # 质心的x坐标#cy = moments['m01'] / moments['m00'] # 质心的y坐标center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))# 只有当物体半径大于一定值时才显示追踪结果if radius > 10:   #外接圆半径大于10# 在图像上绘制物体的圆形轮廓和中心# 这一行代码绘制一个以 (x, y) 为圆心,半径为 radius 的圆。颜色为 (0, 255, 255) 表示BGR格式中的黄色,线宽度为2。cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255, 255), 2)#这一行代码绘制一个半径为5的实心圆作为中心点,以 center 为中心。颜色为 (0, 0, 255) 表示BGR格式中的红色。。cv2.circle(frame, center, 5, (0, 0, 255), -1)# 显示实时追踪结果#这行代码使用OpenCV的cv2.imshow函数来显示帧,窗口标题为 "Object Tracking"。cv2.imshow("Object Tracking", frame)# 按下Esc键退出追踪if cv2.waitKey(1) == 27:break# 释放摄像头并关闭窗口cap.release()cv2.destroyAllWindows()# 运行物体追踪程序
track_ob

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@RequestMapping详解:请求映射规则

目录 请求-相应模式: 设置请求映射规则RequestMapping POST 请求: GET 请求 请求-相应模式: 前端作为客户端向后端发送请求(请求可以分为请求头和请求体两部分,请求头包含了一些元数据信息,如请求方式、…

硬盘录像机无法注册到视频监控平台EasyCVR上是什么原因?该如何解决?

视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也…

【20年扬大真题】试写一算法在带头结点的单链表结构上实现线性表操作LENGTH(L)

【20年扬大真题】 试写一算法在带头结点的单链表结构上实现线性表操作LENGTH&#xff08;L&#xff09;。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdbool.h> #include<malloc.h> //单链表定义 //链表结点 int A[10] { 1,2,3,4,5,6,…

开源C++智能语音识别库whisper.cpp开发使用入门

whisper.cpp是一个C编写的轻量级开源智能语音识别库&#xff0c;是基于openai的开源python智能语音模型whisper的移植版本&#xff0c;依赖项少&#xff0c;内存占用低&#xff0c;性能更优&#xff0c;方便作为依赖库集成的到应用程序中提供语音识别功能。 以下基于whisper.c…

低调使用。推荐一个 GPT4 Turbo、Vision、GPTs、DELL·E3 等所有最新功能同步可用国内网站

在 11 月 6 日&#xff0c;万众期待的 OpenAI DevDay&#xff0c;ChatGPT 发布了一系列新的产品&#xff0c;其中推出了 GPT4 Turbo&#xff0c;并且将GPT4 Vision&#xff0c;DELLE3 等等能力全部集合到一起&#xff0c;不需要再分开使用&#xff0c;原来的局限的文本聊天也进…

python类的多重继承继承和查找顺序

1 python类的多重继承继承和查找顺序 python中&#xff0c;类的多重继承允许子类继承多个基类&#xff0c;子类可以访问多个基类的属性和方法。 1.1 多重继承基础 用法 class MulClass(BaseC1,BaseC2,...BaseCn):pass描述 Mulclass&#xff1a;子类&#xff08;或者称混合…

JavaScript包装类型

前端面试大全JavaScript包装类型 &#x1f31f;经典真题 &#x1f31f;包装类型 &#x1f31f;真题解答 &#x1f31f;总结 &#x1f31f;经典真题 是否了解 JavaScript 中的包装类型&#xff1f; &#x1f31f;包装类型 在 ES 中&#xff0c;数据的分类分为基本数据类型…

微信预约小程序制作

对于许多新手来说&#xff0c;制作微信预约小程序可能是一项挑战&#xff0c;但并非不可能。本文将通过详细的步骤&#xff0c;指导您从零开始制作一个微信预约小程序。首先&#xff0c;您需要找一个合适的第三方制作平台或工具&#xff0c;乔拓云网就是其中之一。 找一个合适的…

【数据结构】八大排序 (三)

目录 前言&#xff1a; 快速排序 快速排序非递归实现 快速排序特性总结 归并排序 归并排序的代码实现 归并排序的特性总结 计数排序 计数排序的代码实现 计数排序的特性总结 前言&#xff1a; 前文快速排序采用了递归实现&#xff0c;而递归会开辟函数栈帧&#xff0…

信号类型(通信)——最小频移键控(MSK)

系列文章目录 《信号类型&#xff08;通信&#xff09;——仿真》 《信号类型&#xff08;通信&#xff09;——QAM调制信号》 《信号类型&#xff08;通信&#xff09;——QPSK、OQPSK、IJF_OQPSK调制信号》 目录 前言 一、MSK信号特点 1.1、最小频移 1.2、相位连续 二…

小红书API接口测试 | 小红书笔记详情 API 接口测试指南

一、引言 随着互联网的发展&#xff0c;越来越多的应用开始使用API接口来提供服务。而API接口的测试也变得越来越重要。本文将介绍如何使用Python语言进行小红书笔记详情API接口的测试。 二、小红书笔记详情API接口介绍 小红书笔记详情API接口是用于获取指定笔记详细信息的接…

Ubuntu16.04.4系统本地提权实验

目录 1.介绍&#xff1a; 2.实验&#xff1a; 3.总结&#xff1a; 1.介绍&#xff1a; 1.1&#xff1a;eBPF简介&#xff1a;eBPF(extendedBerkeleyPacketFilter)是内核源自于BPF的一套包过滤机制&#xff0c;BPF可以理解成用户与内核之间的一条通道&#xff0c;有非常强大的…

Python的控制流语句使用

Python的控制流语句使用 判断语句 if分支示意图语法介绍注意事项示例 for循环示意图语法介绍列表推导式示例 while循环与for的区别语法介绍示例 判断语句 if分支 示意图 单、双、多分支&#xff1a; 语法介绍 # 单分支 if condition:expression # 双分支 if condition:exp…

Spark-java版

SparkContext初始化 相关知识 SparkConf 是SparkContext的构造参数&#xff0c;储存着Spark相关的配置信息&#xff0c;且必须指定Master(比如Local)和AppName&#xff08;应用名称&#xff09;&#xff0c;否则会抛出异常&#xff1b;SparkContext 是程序执行的入口&#xf…

设计好的测试用例,6大注意事项

设计好的测试用例对于发现缺陷、验证功能、提高可靠性、降低风险和提高效率都具有重要的作用&#xff0c;是保证产品质量和稳定性的重要环节。如果测试用例有问题&#xff0c;可能会导致遗漏缺陷、功能验证不充分、测试效率低下以及误报漏报等问题&#xff0c;从而影响项目的质…

Ubuntu安装nfs服务步骤

Ubuntu安装nfs服务步骤 一、NFS&#xff1f; NFS&#xff1a;网络文件系统&#xff08;Network File system File&#xff09;缩写&#xff0c;可通过网络让不同的机器&#xff0c;不同操作系统之间可以彼此共享文件和目录。 二、安装 1.安装nfs服务器命令&#xff1a;sudo…

BUUCTF-pwn-ciscn_2019_ne_51

简单查看保护&#xff1a; 32为程序没有canary没有PIE&#xff0c;应该是简单的栈溢出。我们照着这个思路去找溢出点在哪&#xff0c;运行下程序看看什么情况&#xff1a; 程序上来是输入一个密码验证。随便输入下错误直接退出。因此我们需要到IDA中看看怎么回事&#xff1a; 主…

F. Magic Will Save the World

首先积攒了能量打了怪再积攒是没有意义的&#xff0c;可以直接积攒好&#xff0c;然后一次性进行攻击 那么怎么进行攻击了&#xff1f;可以尽量的多选怪物使用水魔法攻击剩余的再用火魔法进行攻击&#xff0c; 也就是只要存在合法的体积&#xff08;即装入背包的怪物的体积之…

qt-C++笔记之主线程中使用异步逻辑来处理ROS事件循环和Qt事件循环解决相互阻塞的问题

qt-C笔记之主线程中使用异步逻辑来处理ROS事件循环和异步循环解决相互阻塞的问题 code review! 文章目录 qt-C笔记之主线程中使用异步逻辑来处理ROS事件循环和异步循环解决相互阻塞的问题1.Qt的app.exec()详解2.ros::spin()详解3.ros::AsyncSpinner详解4.主线程中结合使用的示…

MySQL练习题及答案

一 、表结构 用户表(user)&#xff1a;id(主键)、username、password、email、phone、age商品表(product)&#xff1a;id(主键)、name、price、stock、description订单表(order)&#xff1a;id(主键)、user_id(外键&#xff0c;关联用户表)、total_price、status、create_time…