当前位置:网站首页>Opencv实现对象跟踪
Opencv实现对象跟踪
2022-06-27 05:14:00 【Keep_Trying_Go】
1.轮廓查找和轮廓绘制
https://mydreamambitious.blog.csdn.net/article/details/125339604
2.高斯去噪
https://mydreamambitious.blog.csdn.net/article/details/125203273
3.腐蚀和膨胀
https://mydreamambitious.blog.csdn.net/article/details/125265431
4.cv2.inRange函数
作用:rgb颜色空间转换到hsv颜色空间,颜色去除白色背景部分
参数:
第一个参数:hsv指输入的原图;
第二个参数:lower_red指的是图像中低于这个lower_red的值,像素值变为0;
第三个参数:upper_red指的是图像中高于这个upper_red的值,像素值变为0;
5.cv2.minEnclosingCircle函数
函数作用:得到包含二维点集的最小圆
参数:
InputArray points:输入的二维点集;
Point2f& center:表示输出的圆形的中心坐标,是float型;
float& radius:输出的最小圆的半径,是float型;
6.cv2.moments函数
求轮廓的矩:
mu = cv.moments(contour) #contour是一个轮廓
cx = mu[‘m10’] / mu[‘m00’] #轮廓contour的质心的横坐标
cy = mu[‘m01’] / mu[‘m00’] #轮廓contour的质心的纵坐标
https://blog.csdn.net/Caesar6666/article/details/103257632
7.代码实战
import os
import cv2
import numpy as np
cap=cv2.VideoCapture(0)
#设置RGB->HSV的低阈值和高阈值
Obj_low=np.array([0,0,0])
Obj_high=np.array([179,157,79])
while cap.isOpened():
OK,frame=cap.read()
if OK==False:
break
#对图片进行翻转,Opencv读取的图片和我们正常的显示方式相反
img=cv2.flip(src=frame,flipCode=2)
img=cv2.resize(src=img,dsize=(600,600))
#对图像进行高斯处理
gauss=cv2.GaussianBlur(src=img,ksize=(3,3),sigmaX=0)
#将图像转换为灰度图
gray=cv2.cvtColor(src=gauss,code=cv2.COLOR_BGR2HSV)
inrange=cv2.inRange(src=gray,lowerb=Obj_low,upperb=Obj_high)
#对图像进行腐蚀
kernel=cv2.getStructuringElement(shape=cv2.MORPH_RECT,ksize=(3,3))
erode=cv2.erode(src=inrange,kernel=kernel,iterations=2)
#对图形进行膨胀
dilate=cv2.dilate(src=erode,kernel=kernel,iterations=2)
#查找轮廓
contours,hierarchy=cv2.findContours(image=dilate,mode=cv2.RETR_TREE,
method=cv2.CHAIN_APPROX_SIMPLE)
maxArea=0
index=0
length=len(contours)
if length>0:
for i in range(length):
#计算轮廓的面积
area=cv2.contourArea(contours[i])
if area>maxArea:
maxArea=area
index=i
#得到包含最小点集的圆
((x,y),radius)=cv2.minEnclosingCircle(contours[index])
M=cv2.moments(contours[index])
center=(int(M['m10']/M['m00']),int(M['m01']/M['m00']))
if radius>5:
cv2.circle(img=img,center=center,radius=2,
color=(0,255,0),thickness=-1)
cv2.circle(img=img,center=center,radius=int(radius),
color=(0,0,255),thickness=3)
cv2.imshow('image',img)
if cv2.waitKey(1)&0xFF==27:
break
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')
边栏推荐
猜你喜欢
随机推荐
双位置继电器RXMVB2 R251 204 110DC
py2neo基本语法
Vue学习笔记(五)Vue2页面跳转问题 | vue-router路由概念、分类与使用 | 编程式路由导航 | 路由组件的缓存 | 5种路由导航守卫 | 嵌套路由 | Vue2项目的打包与部署
011 C语言基础:C作用域规则
《数据库原理与应用》第一版 马春梅……编著 期末复习笔记
关于元器件封装的一些文章和一下我的体会
Pytest框架的执行规则
Microservice system design -- unified authentication service design
Almost because of json Stringify lost his bonus
unity点光源消失
【B站UP DR_CAN学习笔记】Kalman滤波2
机械转码日记【17】模板,STL简介
Pycharm 中 Terminal 无法进入 venv 环境的问题
【C语言】关键字的补充
DAST 黑盒漏洞扫描器 第六篇:运营篇(终)
When STM32 turns off PWM output, it is a method to fix IO output at high or low level.
008 C language foundation: C judgment
微服务系统设计——服务链路跟踪设计
Chapter 2 Introduction to key technologies
Unity point light disappears

![[unity] button of UI interactive component & summary of optional base classes](/img/9f/be9005f03ad9a2bc8da0f910f064c5.png)







