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 22 Python
Python实现的Google IP 可用性检测脚本
Apr 23 Python
详解Python的Django框架中的templates设置
May 11 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
Python使用folium excel绘制point
Jan 03 Python
Python计算时间间隔(精确到微妙)的代码实例
Feb 26 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 Python
pytorch加载语音类自定义数据集的方法教程
Nov 10 Python
python 基于opencv实现图像增强
Dec 23 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 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
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
推荐dojo学习笔记
2007/03/24 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
python实现随机漫步算法
2018/08/27 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
python学生管理系统开发
2019/01/30 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
如何在sublime编辑器中安装python
2020/05/20 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
Python正则表达式如何匹配中文
2020/05/27 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
智能钱包:Ekster
2019/11/21 全球购物
大学生安全责任书
2014/07/25 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
防汛工作情况汇报
2014/10/28 职场文书
Django中celery的使用项目实例
2022/07/07 Python
Java Spring读取和存储详细操作
2022/08/05 Java/Android