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简单的函数定义和用法实例
May 07 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
python实现超简单的视频对象提取功能
Jun 04 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
在python中使用requests 模拟浏览器发送请求数据的方法
Dec 26 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
python实现单链表的方法示例
Sep 03 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
基于tensorflow权重文件的解读
May 26 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微信公众号开发之秒杀
2018/10/20 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
js有关元素内容操作小结
2011/12/20 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
python的id()函数介绍
2013/02/10 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
党员个人思想汇报
2013/12/28 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
销售人员求职信
2014/07/22 职场文书
趣味运动会广播稿
2014/09/13 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL