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 相关文章推荐
基于并发服务器几种实现方法(总结)
Dec 29 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
Python中的元组介绍
Jan 28 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
php身份证号码检查类实例
2015/06/18 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
理解Python中的With语句
2015/02/02 Python
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
将python图片转为二进制文本的实例
2019/01/24 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
药剂专业学生求职信范文
2013/12/28 职场文书
村级个人对照检查材料
2014/08/22 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL