OpenCV3.0+Python3.6实现特定颜色的物体追踪


Posted in Python onJuly 23, 2019

一、环境

win10、Python3.6、OpenCV3.x;编译器:pycharm5.0.3

二、实现目标

根据需要追踪的物体颜色,设定阈值,在视频中框选出需要追踪的物体。

三、实现步骤

1)根据需要追踪的物体颜色,设定颜色阈值,获取追踪物体的掩膜

代码:generate_threshold.py

# -*- coding : utf-8 -*-
# Author: Tom Yu
import cv2
import numpy as np
 
cap = cv2.VideoCapture(0)#获取摄像头图像
# img = cv2.imread("timg1.jpg")
# hsv_img = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
 
def nothing(x):
  pass
def createbars():
  """
  实现创建六个滑块的作用,分别控制H、S、V的最高值与最低值
  """
  cv2.createTrackbar("H_l","image",0,180,nothing)
  cv2.createTrackbar("H_h","image",0,180,nothing)
  cv2.createTrackbar("S_l","image",0,255,nothing)
  cv2.createTrackbar("S_h","image",0,255,nothing)
  cv2.createTrackbar("V_l","image",0,255,nothing)
  cv2.createTrackbar("V_h","image",0,255,nothing)
cv2.namedWindow("image")
createbars()#创建六个滑块
 
lower = np.array([0,0,0])#设置初始值
upper = np.array([0,0,0])
while True:
  ret,frame = cap.read()
  hsv_frame = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)#将图片由BGR颜色空间转化成HSV空间,HSV可以更好地分割颜色图形
  lower[0]=cv2.getTrackbarPos("H_l","image")#获取"H_l"滑块的实时值
  upper[0]=cv2.getTrackbarPos("H_h","image")#获取"H_h"滑块的实时值
  lower[1]=cv2.getTrackbarPos("S_l","image")
  upper[1]=cv2.getTrackbarPos("S_h","image")
  lower[2]=cv2.getTrackbarPos("V_l","image")
  upper[2]=cv2.getTrackbarPos("V_h","image")
 
  mask = cv2.inRange(hsv_frame,lower,upper)#cv2.inrange()函数通过设定的最低、最高阈值获得图像的掩膜
  cv2.imshow("img",frame)
  cv2.imshow("mask",mask)
  if cv2.waitKey(1)&0xff == 27:
    break
 
cv2.destroyAllWindows()

实现效果:获取需要追踪的物体颜色阈值

OpenCV3.0+Python3.6实现特定颜色的物体追踪

2)根据获取到的阈值,设定阈值范围,在视频中追踪特定颜色的物体并用框选框出所需追踪的物体

代码:tracking_object.py

# -*- coding : utf-8 -*-
# Author: Tom Yu
import cv2
import numpy as np
 
cap = cv2.VideoCapture(0)#获取摄像头视频
 
while True:
  ret,frame = cap.read()#读取每一帧图片
  hsv_frame = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)#将每一帧图片转化HSV空间颜色
  """
  依据之前的脚本获取的阈值设置最高值与最低值
  """
  lower = np.array([0,104,205])
  upper = np.array([15,208,255])
 
  mask = cv2.inRange(hsv_frame,lower,upper)
  img,conts,hier = cv2.findContours(mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)#找出边界
  cv2.drawContours(frame,conts,-1,(0,255,0),3)#画出边框
  dst = cv2.bitwise_and(frame,frame,mask=mask)#对每一帧进行位与操作,获取追踪图像的颜色
  #cv2.imshow("mask",mask)
  #cv2.imshow("dst",dst)
  cv2.imshow("frame",frame)
  if cv2.waitKey(1)&0xff == 27:
    break
 
cv2.destroyAllWindows()

实现效果:

OpenCV3.0+Python3.6实现特定颜色的物体追踪

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中变量交换的例子
Aug 25 Python
Python比较两个图片相似度的方法
Mar 13 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
django解决跨域请求的问题详解
Jan 20 Python
python3 map函数和filter函数详解
Aug 26 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
Python实现加密接口测试方法步骤详解
Jun 05 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
提升Python效率之使用循环机制代替递归函数
Jul 23 #Python
深入了解Django View(视图系统)
Jul 23 #Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 #Python
flask框架单元测试原理与用法实例分析
Jul 23 #Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 #Python
python实现socket+threading处理多连接的方法
Jul 23 #Python
简单了解Django ContentType内置组件
Jul 23 #Python
You might like
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
代码分析vue中如何配置less
2018/09/28 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
python选择排序算法实例总结
2015/07/01 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
python把1变成01的步骤总结
2019/02/27 Python
python实现逻辑回归的示例
2020/10/09 Python
英国最大的百货公司:Harrods
2016/08/18 全球购物
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
简单说说tomcat的配置
2013/05/28 面试题
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
财务会计专业推荐信
2013/11/30 职场文书
法学专业毕业生自荐信范文
2013/12/18 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
小组名称和口号
2014/06/09 职场文书
升职自荐信怎么写
2015/03/05 职场文书
搬迁通知
2015/04/20 职场文书
返乡农民工证明
2015/06/24 职场文书
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers