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写一个md5解密器示例
Feb 23 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
python爬虫之urllib3的使用示例
Jul 09 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
python 实现目录复制的三种小结
Dec 04 Python
python学生信息管理系统实现代码
Dec 17 Python
python自动下载图片的方法示例
Mar 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
PHP缓存技术的多种方法小结
2012/08/14 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
Python多线程学习资料
2012/12/19 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
对numpy中shape的深入理解
2018/06/15 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
Python如何调用外部系统命令
2019/08/07 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
Python如何将字符串转换为日期
2020/07/31 Python
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
2014年租房协议书范本
2014/10/30 职场文书
成本会计岗位职责
2015/02/03 职场文书
小学思品教学反思
2016/02/20 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL