OpenCV3.0+Python3.6实现特定颜色的物体追踪
作者:qq_20156437 发布时间:2021-05-13 09:01:03
标签:python,OpenCV,物体追踪
一、环境
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()
实现效果:获取需要追踪的物体颜色阈值
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()
实现效果:
来源:https://blog.csdn.net/qq_20156437/article/details/83026452
0
投稿
猜你喜欢
- 比如在学习list、tuple、dict、str、os、sys等模组的时候,利用Python的自带文档可以很快速的全面的学到那些处理的函数。
- 最近刚刚接触深度学习,并尝试学习制作数据集,制作过程中发现了一个问题,现在跟大家分享一下。问题是这样的,在制作voc数据集时,我采集的是灰度
- 开始之前当然要导入模块啦:>>> import pymongo下一步,必须本地mongodb服务器的安装和启动已经完成,才
- PIL:使用python自带图像处理库读取出来的图片格式numpy:使用python-opencv库读取出来的图片格式tensor:pyto
- 在我们使用一些数据的过程中,我们想要打乱数组内数据的顺序但不改变数据本身,可以通过改变索引值来实现,也就是将索引值重新随机排列,然后生成新的
- 一、前言 英语单词之间是通过空格分隔的,但是中文却不存在空格的概念,因此需要
- 一、使用场景需求1、在实际项目开发过程中,用户可以操作的数据,我们往往会新增一个字段,来保存用户最后一次修改时间2、一些系统中,我们需要存储
- 一、问题描述如题,在使用pip install xxx的方法安装python库,或者是基于python的软件时,报错“E
- 1 读/写文件NumPy文件读写主要有二进制的文件读写和文件列表形式的数据读写两种形式1、二进制的文件读写save函数是以二进制的格式保存数
- 昨天下班后忽然兴起想写一个爬虫抓抓网页上的东西。花了一个钟简单学习了python的基础语法,然后参照网上的例子自己写了个爬虫。python数
- 本文实例讲述了Python编程中的反模式。分享给大家供大家参考。具体分析如下:Python是时下最热门的编程语言之一了。简洁而富有表达力的语
- 摘要:本文主要是在pandas中如何对字符串进行切分。我们考虑一下下面的应用场景。这个是我们的数据集(data),可以看到,数据集中某一列(
- 从控制台输入要出的拳 —— 剪刀(0)/石头(1)/布(2) 电脑 **随机*
- 一、游戏展示所谓:开局一张图,后面全靠编。先放图片、动画展示一波。游戏玩法很简单,按空格猴子↑跳起来,躲开巨浪袭击,时间越
- 在 python 开发中我们最常用的IDE就是PyCharm,有关PyCharm的优点这里就不在赘述。在项目开发中我们经常用到许多第三方库,
- 平时制作页面中可对属性list-style在list-item对象中常用,但用的都不深。一般都设为none重置整个页面就差不多OK,可能很多
- 这个仿msn的右下角popup提示窗口效果很久以前收集的,现在整理出来给大家分享,需要的朋友可以拿去用,特点,提示窗口内容和js代码分离容易
- 这个技巧将教你如何用css做出漂亮的文本按钮,有活力的按钮将节省你很多制作图片的时间,也能让你一天的工作中成为一个快乐的人,让我们一起看看效
- 前言相信大家初入某个项目,一般都要看代码。有时候,想把代码文件打印下来看,不过一般代码文件数量都在两位数或更多,逐一打开、打印,确实太耗费精
- 介绍一下,如何在php程序中运行Python脚本,在php中python程序的运行,主要依靠 程序执行函数,这里说一下三个相关函数:exec