Opencv实现对象跟踪
文章目录
- 1.轮廓查找和轮廓绘制
- 2.高斯去噪
- 3.腐蚀和膨胀
- 4.cv2.inRange函数
- 5.cv2.minEnclosingCircle函数
- 6.cv2.moments函数
- 7.代码实战
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 npcap=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=0index=0length=len(contours)if length>0:for i in range(length):#计算轮廓的面积area=cv2.contourArea(contours[i])if area>maxArea:maxArea=areaindex=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')
Opencv实现对象跟踪相关推荐
- opencv实现对象跟踪_如何使用opencv跟踪对象的距离和角度
opencv实现对象跟踪 介绍 (Introduction) Tracking the distance and angle of an object has many practical uses, ...
- OpenCV 实时对象跟踪(质心跟踪)
本文章先介绍对象跟踪过程,考虑对象跟踪的特点决定使用:质心跟踪算法,然后会一步一步说明质心跟踪算法的实现:最后是如何用python代码实现. 实验效果如下: 对象跟踪过程 进行一组初始的对象检测(如: ...
- 使用 OpenCV 进行对象跟踪的几种算法解读
使用 OpenCV 进行对象跟踪--算法 在本节中,我们将深入研究不同的跟踪算法.目标不是对每个跟踪器有深入的理论理解,而是从实践的角度理解它们. 让我首先解释跟踪背后的一些一般原则.在跟踪中,我们的 ...
- 目标跟踪(7)使用 OpenCV 进行简单的对象跟踪
1.简述 目标跟踪的过程是: 1.获取对象检测的初始集(例如边界框坐标的输入集) 2.为每个初始检测创建唯一的ID 3.然后跟踪每一个在视频中移动的对象,保持唯一ID的分配 此外,对象跟踪允许我们为每 ...
- Java OpenCV 图像处理30 视频分析和对象跟踪 视频读取
Java OpenCV 图像处理30 视频分析和对象跟踪 视频读取 Java OpenCV-4.0.0 图像处理 视频分析和对象跟踪 视频读取 package com.xu.opencv.video; ...
- Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景
Java OpenCV 图像处理32.4 视频分析和对象跟踪 切换背景 方法 含义 解释 bitwise_and "与"操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制 ...
- OpenCV视频分析与对象跟踪实战教程-贾志刚-专题视频课程
OpenCV视频分析与对象跟踪实战教程-1957人已学习 课程介绍 OpenCV视频分析与对象跟踪实战视频培训课程概况:基于OpenCV新版本3.2 从基本的OpenCV视频读写与摄像 ...
- OpenCV连续自适应跟踪算法CAMShift实现视频对象跟踪
1.概述 案例:使用OpenCV的CAMShift算法实现视频中对象跟踪 算法API介绍: 本文福利,莬费领取Qt开发学习资料包.技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,Q ...
- OpenCV~对象跟踪
本文将展示如何使用 OpenCV 中的一些基本功能来执行复杂的对象跟踪任务 OpenCV 是一个很好的处理图像和视频的工具.无论你是想让你的照片呈现 90 年代的黑白效果,还是执行复杂的数学运算,Op ...
最新文章
- 一次gitlab无法使用ssh登录的问题解决
- NeHe OpenGL教程 第二十三课:球面映射
- 安卓samba软件_Android Samba Client
- pandas用read_csv时编码问题解决
- Day 13: Dropwizard —— 非常棒的Java REST服务器栈
- 美团Android资源混淆保护实践
- 关于java中::语法的理解
- IntrospectorCleanupListener作用
- mysql 有两种数据库引擎发音
- 2018年11月12日
- P5708 【深基2.习2】三角形面积(python3实现)
- 怎么在c语言里输入数组元素,如何在不输入n的情况下输入数组中的元素? (C )...
- Guojiz网址导航系统PHP网站源码
- window命令行大全
- 不要在构造和析构函数中使用虚函数
- python中类方法、类实例方法、静态方法的使用与区别
- 疯狂Java讲义笔记汇总
- ws550 第三方固件_华为WS550路由器如何固件升级
- java流浪救助站公益志愿者管理系统
- oracle+alert删除日志,清除alert log
热门文章
- 一文图解前端WebSocket 实时通信
- python应用实例:坐标转换——基于布尔莎模型,可实现BJ54坐标系/GSC2000坐标系/WGS84等各种地心直角坐标系的转换
- N天学习一个Linux命令之top
- Mol Cell Proteomics. |彭建祥| 人胃肠道间质瘤亚群蛋白质组图谱
- 输出π值,小数点后保留6位有效数字。
- cf服务器不显示名字,cf服务器冠名之战 怎么给服务器取名字
- RenderControl获取控件输出的HTML
- 关于Stanza工具包的使用
- Excel如何创建员工姓名的空白表,以统计工资等
- java内存 海子_Java问题