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实现根据图标提取分类应用程序实例
Sep 28 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python科学计算之narray对象用法
Nov 25 Python
Python autoescape标签用法解析
Jan 17 Python
Numpy ndarray 多维数组对象的使用
Feb 10 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 Python
Python如何使用循环结构和分支结构
Apr 13 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 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
js实现文字滚动效果
2016/03/03 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
python分析nignx访问日志脚本分享
2015/02/26 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
《东方明珠》教学反思
2014/04/20 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
组织生活会发言材料
2014/12/15 职场文书
五年级学生评语大全
2014/12/26 职场文书
工程质量保证书
2015/05/09 职场文书
redis 查看所有的key方式
2021/05/07 Redis
Go获取两个时区的时间差
2022/04/20 Golang