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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
Python中的魔法方法深入理解
Jul 09 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
python 显示数组全部元素的方法
Apr 19 Python
python和opencv实现抠图
Jul 18 Python
python实现图片识别汽车功能
Nov 30 Python
基于Python的PIL库学习详解
May 10 Python
解决使用export_graphviz可视化树报错的问题
Aug 09 Python
tensorboard显示空白的解决
Feb 15 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 Python
Python3的进程和线程你了解吗
Mar 16 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
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
PHP实现图片压缩
2020/09/09 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
使用python绘制常用的图表
2016/08/27 Python
Python装饰器用法示例小结
2018/02/11 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
Python猜数字算法题详解
2020/03/01 Python
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
环保建议书300字
2014/05/14 职场文书
五一口号
2014/06/19 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
人事局接收函
2015/01/30 职场文书
文体活动总结
2015/02/04 职场文书
家长意见书
2015/06/04 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang