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模拟登录12306的方法
Dec 30 Python
MySQL最常见的操作语句小结
May 07 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
Python 正则表达式实现计算器功能
Apr 29 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
python opencv3实现人脸识别(windows)
May 25 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
django重新生成数据库中的某张表方法
Aug 28 Python
Python ATM功能实现代码实例
Mar 19 Python
Python实现动态循环输出文字功能
May 07 Python
python爬虫scrapy基本使用超详细教程
Feb 20 Python
对Keras自带Loss Function的深入研究
May 25 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单一接口的实现方法
2015/06/20 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
调试php程序的简单步骤
2019/10/04 PHP
JQuery节点元素属性操作方法
2015/06/11 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
python遍历目录的方法小结
2016/04/28 Python
python中requests库session对象的妙用详解
2017/10/30 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
Python魔法方法功能与用法简介
2019/04/04 Python
python+opencv实现车道线检测
2021/02/19 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
英国电器零售商:PRC Direct
2018/06/21 全球购物
大学生就业策划书范文
2014/04/04 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
商铺门面租房协议书
2014/10/21 职场文书
80后婚前协议书范本
2014/10/24 职场文书
教师先进事迹材料
2014/12/16 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
Vue如何实现组件间通信
2021/05/15 Vue.js