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爬虫之urllib2使用指南
Nov 05 Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
Feb 04 Python
Python编程对列表中字典元素进行排序的方法详解
May 26 Python
Python使用getpass库读取密码的示例
Oct 10 Python
Python3学习urllib的使用方法示例
Nov 29 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
Python中format()格式输出全解
Apr 12 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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
php图片加中文水印实现代码分享
2012/10/31 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
如何解决vue在ios微信"复制链接"功能问题
2020/03/26 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
python基础教程之面向对象的一些概念
2014/08/29 Python
python计算时间差的方法
2015/05/20 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
python 操作excel表格的方法
2020/12/05 Python
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
给校长的建议书400字
2014/05/15 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
内勤岗位职责范本
2015/04/13 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python