当前位置:网站首页>OpenCV 教程 03: 如何跟踪视频中的某一对象
OpenCV 教程 03: 如何跟踪视频中的某一对象
2022-07-17 16:15:00 【somenzz】
视频的每一帧就是一张图片,跟踪视频中的某一对象,分解下来,其实就是在每一帧的图片中找到那个对象。
既然要找到那个对象,就要先定义这个目标对象,既然是图片,那就有颜色,先了解下常用的 3 种颜色模型。
RGB。RGB 就是三原色光模式,又称 RGB 颜色模型或红绿蓝颜色模型,是一种加色模型,将红、绿、蓝三原色的色光以不同的比例相加,以合成产生各种色彩光。每一个像素点都有都有 3 个值表示颜色,这是最常见的颜色模型了。OpenCV 中的顺序是 BGR。
灰度图。简单的理解,就是黑白图,图像的每个 像素点 只能有 一个值 表示颜色,像素值范围是 [0~255],现有的成熟分析算法多是基于灰度图像。
HSV。这个模型中颜色的参数分别是色调(H)、饱和度(S)和明度(V).HSV对用户来说是一种直观的颜色模型。我们可以从一种纯色彩开始,即指定色调H,并让V=S=1,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。
以上三个模型,使用 HSV 定义一个目标对象更为方便。
OpenCV 可以很方便的从 BGR 转换为灰度图,从 BGR 转换为 HSV:
import cv2 as cv
cv.cvtColor(input_image, cv.COLOR_BGR2GRAY)
cv.cvtColor(input_image, cv.COLOR_BGR2HSV)现在我们知道如何将 BGR 图像转换为 HSV,我们可以使用它来提取彩色对象。在 HSV 中,表示颜色比在 BGR 颜色空间中更容易。
接下来,我们将在视频中追踪蓝色对象。
步骤:
拍摄视频的每一帧
从 BGR 转换为 HSV 颜色空间
我们将 HSV 图像阈值设置为蓝色范围
单独提取蓝色对象,可以在该图像上做任何我们想做的事情。
下面是详细注释的代码:
import cv2 as cv
import numpy as np
# 从默认的摄像头读取视频
cap = cv.VideoCapture(0)
while True:
# 获取视频的每一帧
_, frame = cap.read()
# BGR 转换为 HSV
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
# 用 HSV 定义目标对象的颜色范围。
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
# 生成一个 HSV 遮罩只获取蓝色对象。
mask = cv.inRange(hsv, lower_blue, upper_blue)
#应用
res = cv.bitwise_and(frame,frame, mask= mask)
cv.imshow('frame',frame)
cv.imshow('mask',mask)
cv.imshow('res',res)
k = cv.waitKey(5) & 0xFF
if k == 27:
break
cv.destroyAllWindows()效果图如下,可以看到有一点噪音,单后面有技术可以消除。
最后
如果帮助,请在看支持。

边栏推荐
猜你喜欢

Genesis与BlueRun Ventures展开深度交流
![[embedded unit test] construction of C language unit test framework](/img/d4/ba7e5ffa1a782c2478d1f6682f2637.png)
[embedded unit test] construction of C language unit test framework

Scrapy关键词 爬虫的简单实现(以新华网和人民网为例)

Configuring OSPF experiment in mGRE environment

数据库每日一题---第25天:银行账户概要 II

MGRE 环境下配置OSPF实验

核芯基站_启动CPA文件报错‘No gateways configured’

psd. JS parsing PSD file

MySQL learning notes - constraints
![[original] magisk+shamiko has been tested by app root](/img/85/29367cf544c0f221a5c296cdd8facd.png)
[original] magisk+shamiko has been tested by app root
随机推荐
微机原理与技术接口 实验五 基本IO操作温度控制实验
Valid bracket sequence of "Niuke | daily question"
Matlab (4) functions and files
The adaptation of go language under windows10:vscode
SQL盲注详解
QT learning diary 17 - QT database
Use native JS to realize the function of selecting all buttons, which is simple and clear
JS chain call sleep function ------ "autumn trick punch in Chapter 2"
C语言绘图示例-繁花图案
Core base station_ The error "no gateways configured" is reported when starting the CPA file
zabbix-snmp监控
MAPGIS igserver Kyushu - expand service development under the control of localization environment
LeetCode_77_组合
mysql学习笔记-约束
Gradient button function button drawing C language example
HCIP(5)
MySQL learning notes - paging - table creation - data type
The concept of binary tree and three traversal methods (C language)
编辑技巧篇
MapGIS IGServer九州-驾驭国产化环境下的拓展服务开发