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插入排序算法的实现代码
Nov 21 Python
Python使用百度API上传文件到百度网盘代码分享
Nov 08 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
python 使用get_argument获取url query参数
Apr 28 Python
Python 调用Java实例详解
Jun 02 Python
Python中常用信号signal类型实例
Jan 25 Python
简单谈谈python基本数据类型
Sep 26 Python
virtualenv 指定 python 解释器的版本方法
Oct 25 Python
解决Python对齐文本字符串问题
Aug 28 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
Python描述符descriptor使用原理解析
Mar 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
一个简易需要注册的留言版程序
2006/10/09 PHP
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
Python计算程序运行时间的方法
2014/12/13 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
解读python如何实现决策树算法
2018/10/11 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Python的pygame安装教程详解
2020/02/10 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
金融专业大学生自我评价
2014/01/09 职场文书
2014年教师节活动总结
2014/08/29 职场文书
离职报告范文
2014/11/04 职场文书
承诺书范本
2015/01/21 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python
Python字典的基础操作
2021/11/01 Python
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server