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字典操作简明总结
Apr 13 Python
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
基于python requests库中的代理实例讲解
May 07 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
Python接口测试数据库封装实现原理
May 09 Python
如何利用Python 进行边缘检测
Oct 14 Python
使用Python+Appuim 清理微信的方法
Jan 26 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
php 无限级 SelectTree 类
2009/05/19 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
php生成随机颜色的方法
2014/11/13 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
python的变量与赋值详细分析
2017/11/08 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
食品安全汇报材料
2014/08/18 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
会议通知格式范文
2015/04/15 职场文书
文明礼貌主题班会
2015/08/14 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript