#frame = imutils.resize(frame, width=600)
#转到HSV空间
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
#根据阈值构建掩膜
mask = cv2.inRange(hsv, redLower, redUpper)
#腐蚀操作
mask = cv2.erode(mask, None, iterations=2)
#膨胀操作,其实先腐蚀再膨胀的效果是开运算,去除噪点
mask = cv2.dilate(mask, None, iterations=2)
#轮廓检测
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
#初始化瓶盖圆形轮廓质心
center = None
#如果存在轮廓
if len(cnts) > 0:
#找到面积最大的轮廓
c = max(cnts, key = cv2.contourArea)
#确定面积最大的轮廓的外接圆
((x, y), radius) = cv2.minEnclosingCircle(c)
#计算轮廓的矩
M = cv2.moments(c)
#计算质心
center = (int(M["m10"]/M["m00"]), int(M["m01"]/M["m00"]))
#只有当半径大于10时,才执行画图
if radius > 10:
cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255, 255), 2)
cv2.circle(frame, center, 5, (0, 0, 255), -1)
#把质心添加到pts中,并且是添加到列表左侧
pts.appendleft(center)
#遍历追踪点,分段画出轨迹
for i in xrange(1, len(pts)):
if pts[i - 1] is None or pts[i] is None:
continue
#计算所画小线段的粗细
thickness = int(np.sqrt(mybuffer / float(i + 1)) * 2.5)
#画出小线段
cv2.line(frame, pts[i - 1], pts[i], (0, 0, 255), thickness)
#res = cv2.bitwise_and(frame, frame, mask=mask)
cv2.imshow('Frame', frame)
#键盘检测,检测到esc键退出
k = cv2.waitKey(5)&0xFF
if k == 27:
break
#摄像头释放
camera.release()
#销毁所有窗口
cv2.destroyAllWindows()
deque详细介绍
本文主要参考国外一大牛博客,然后自己修改得来。相关知识点在这里实现功能:追踪红颜色瓶盖,并画出瓶盖轮廓和运动轨迹。from collections import dequeimport numpy as np#import imutilsimport cv2import time#设定红色阈值,HSV空间redLower = np.array([170, 100, 100
lower_red=np.array([150,43,46])
upper_red=np.array([179,255,255])
lower_green=np.array([30,100,100])
upper...
程序参考:树莓派视觉小车 – 小球
追踪
(
颜色
追踪
)(
OpenCV
色彩空间HSV)https://car.inotgo.com/2021/11/20211108230409934Q.html
树莓派算力有限,现在使用手机摄像头充当电脑的无线摄像头,通过手机安装于树莓派小车上实现图像采集,在电脑端进行视觉处理,后期实现计算机控制小车运行实现小球
追踪
。
为什么用HSV空间而不是RGB空间?
因为RGB通道并不能很好地反映出
物体
具体的
颜色
信息。
而HSV空间能够非常直观的表达色彩的明暗、色调
目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶、视频监控、工业质检、医疗诊断等场景。
目标检测的根本任务就是将图片或者视频中感兴趣的目标提取出来,目标的识别可以基于
颜色
、纹理、形状。其中
颜色
属性运用十分广泛,也比较容易实现。下面就向大家分享一个我做的小实验———通过OpenC...
对于
颜色
识别和imutils包的用法请浏览我得另一篇博客:
OpenCV
学习笔记
文章目录
Python
+
OpenCV
颜色
识别
物体
追踪
代码原理代码最终效果图
这是个比较简单的代码。代码实现的就是简单的
物体
追踪
,将
物体
用方框框出。
简单来讲就是先进行
颜色
识别,正确识别到
物体
后获取
物体
的外接矩形再画出外接矩形即可。
详细的解释可以看代码注释,应该是容易理解的。
import cv2
import numpy as np
import imutils
参考资料: https://www.bilibili.com/video/BV16K411W7x9
文章目录乒乓球位置检测一、
颜色
追踪
方法:(一)代码:(二)算法思路:(三)实验效果与分析:二、Hough圆检测方法(一)思路与代码:(二)实验效果与分析:三、两种方案的比较
一、
颜色
追踪
方法:
(一)代码:
基于
python
与
OpenCV
import cv2
import numpy as np
# 乒乓球位置识别,加入了指示移动方向的箭头
def empty
学习了一点
opencv
的知识于是找了个小项目来
实践
一下。这里先说明一下,我的实现方法不见得是最好的(因为这只是一个用于练习的项目)仅作参考,也欢迎各位大佬指正。
让摄像头识别到视野范围内的气球并返回每个气球的中心点坐标。
因为场地固定,背景单一,所以省下来很多操作和处理。于是就有两种解决思路:第一种是基于气球形状做轮廓提取,只要是闭合球形就认为是目标
物体
;第二种是基于气球
颜色
,只要符合目标
物体
的
颜色
就认为是目标
物体
。
因为摄像头是装在四足机器人(它的任务是去扎气球)身上的,所以它如果移动到摄像头视野
OpenCV
Python
提供了一系列的API,可以用来实现
颜色
追踪
,例如 cv2.inRange() 函数,它可以用来检测图像中的某个特定
颜色
,并且返回一个二值图像,用来标记出出现了某个
颜色
的位置。
1.先介绍我做的
颜色
识别的功能,简单的说,就是该脚本可以打开图片,在图片上点击某个区域,可以识别某个区域的
颜色
,
颜色
识别准确度很高,很多时候
颜色
识别是辅助
物体
的
颜色
识别,但这个代码你们可以随意修改,就比如你们使用深度学习识别了车子,然后让自动让鼠标点击车子,识别车子
颜色
,诸如此类。
2.读入图片,使用
opencv
-
python
库,安装
opencv
-
python
命令
pip install
opencv
-
python
没有设置下载源的使用命令
pip install
opencv
-
python
-i ht
目录一、什么是
颜色
目标检测?二、如何实现基于
颜色
的目标检测?三、算法代码实现四、效果展示与分析
一、什么是
颜色
目标检测?
所谓的
颜色
目标检测,即根据
物体
的
颜色
来快速的进行目标定位,该算法的思路比较简单,但是却有很大的使用价值。
二、如何实现基于
颜色
的目标检测?
整个算法的实现步骤比较简单,具体的步骤如下所示:
步骤1-根据图片中的目标设定合适的lower和upper阈值;
步骤2-使用c...
(1)加了pts清空,即当没有检测到目标时,清空pts,显示的图像上不再有轨迹;
(2)加了运动方向判别,能够判别目标的运动方向及当前坐标。
from collections import deque
import numpy as np
import time
#import imu
import matplotlib.pyplot as plt
函数的格式为:kmeans(data, K, bestLabels, criteria, attempts, flags)
(1)data: 分类数据,最好是np.float32的数据,每个特征放一列。之所以是np.float32原因是...
if bbox is not None:
for i in range(len(bbox)):
cv2.line(img, tuple(bbox[i][0]), tuple(bbox[(i+1) % len(bbox)][0]), color=(255, 0, 0), thickness=2)
cv2.imshow("Barcode", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
需要注意的是,这段代码只能识别QR码,如果需要识别其他条形码,可以使用pyzbar库.