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备份文件以及mysql数据库的脚本代码
Jun 10 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
Python request使用方法及问题总结
Apr 26 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
Python如何解除一个装饰器
Aug 07 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
Python如何使用vars返回对象的属性列表
Oct 17 Python
Python中requests做接口测试的方法
May 30 Python
python和anaconda的区别
May 06 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中并发读写文件冲突的解决方案
2013/10/25 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
centos系统升级python 2.7.3
2014/07/03 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
接口可以包含哪些成员
2012/09/30 面试题
《最大的麦穗》教学反思
2014/04/17 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
周末问候语大全
2015/11/10 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
Pandas数据结构之Series的使用
2022/03/31 Python
zabbix配置nginx监控的实现
2022/05/25 Servers