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调用cmd命令行制作刷博器
Jan 13 Python
使用 Python 获取 Linux 系统信息的代码
Jul 13 Python
Python对数据库操作
Mar 28 Python
浅谈python类属性的访问、设置和删除方法
Jul 25 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
pandas通过索引进行排序的示例
Nov 16 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
python中实现控制小数点位数的方法
Jan 24 Python
Python中新式类与经典类的区别详析
Jul 10 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 Python
Django REST Swagger实现指定api参数
Jul 07 Python
golang/python实现归并排序实例代码
Aug 30 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
BBS(php & mysql)完整版(七)
2006/10/09 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
解决vue router组件状态刷新消失的问题
2018/08/01 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
高三毕业典礼主持词
2014/03/27 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
python3操作redis实现List列表实例
2021/08/04 Python
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android