前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenCV学习:物体跟踪

OpenCV学习:物体跟踪

作者头像
烤粽子
发布于 2021-07-07 11:18:38
发布于 2021-07-07 11:18:38
91100
代码可运行
举报
运行总次数:0
代码可运行

HSV是一种将RGB色彩模型中的点在圆柱坐标系中的表示法。这种表示法试图做到比RGB基于笛卡尔坐标系的几何结构更加直观。HSV即色相、饱和度、明度(英语:Hue, Saturation, Value),又称HSB,其中B即英语:Brightness。[1]

在HSV颜色空间中,比在RGB颜色空间中更容易表示一种特定颜色,所以我们利用这一点可以更容易地提取带有某个特定颜色的物体。通过如下几步可以进行简单的物体跟踪

  • 从视频中获取每一帧图像
  • 将图像转换到 HSV 空间
  • 设置 HSV 阈值到蓝色范围

结果如下图所示:

                      图1                                                                                       图2

                        图3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import cv2

#cv2.cvtColor(input_image ,flag) #其中 flag就是转换类型。
#BGR↔Gray 的转换,我们要使用的 flag 就是 cv2.COLOR_BGR2GRAY。
#同样对于 BGRHSV 的转换,我们用的 flag 就是 cv2.COLOR_BGR2HSV。

#flags=[i for in dir(cv2) if i startswith('COLOR_')]
#print(flags)  #通过这两行命令得到所有可用flag
#注意:在 OpenCV 的 HSV 格式中,H(色彩/色度)的取值范围是 [0179]S(饱和度)的取值范围 [0255]V(亮度)的取值范围 [0255]。
# 但是不同的软件使用的值可能不同。所以当你需要拿 OpenCV 的 HSV 值与其他软件的 HSV 值进行对比时,一定要记得归一化。

#HSV 色彩/色度/色相[0,179]   饱和度[0,255]   亮度[0,255]


#物体追踪
cap=cv2.VideoCapture(0)
while(1):
    #获取每一帧
    ret,frame=cap.read()
    
    #转换到HSVHSV里面颜色区别更大
    hsv=cv2.cvtColor(frame,cv2.COLOR_RGB2HSV)
    #cv2.imshow('hsv',hsv)
    
    #设定蓝色的阈值
    lower_blue=np.array([11,43,46])
    upper_blue=np.array([25,255,255])
    #理论上蓝色H范围100-124,实际在11-25(橙)范围找到了蓝色物体,猜想是日光灯的原因。
    
    #根据阈值构建掩模
    mask=cv2.inRange(hsv,lower_blue,upper_blue)#保留阈值范围内,去除背景
    
    #对原图像和掩模进行位运算
    res=cv2.bitwise_and(frame,frame,mask=mask)#bitwise_and(src1, src2, dst=None, mask=None),矩阵1,矩阵2
    #掩模 相当于PCB制版里面的 底片
    
    #显示图像
    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k=cv2.waitKey(5)&0xFF
    if k ==27:
        break

cv2.destroyAllWindows()

说明:参考文章HSV颜色识别-HSV基本颜色分量范围,确定蓝色的HSV区间,结果发现并不能检测出想要的结果,最后不断调整区间在色相区间[11,25]内有较好结果,还不知道是哪里不准确,怀疑是实验室的灯光的原因,有了解的朋友可以留言。

Reference:

[1] HSL和HSV色彩空间. (2018, March 12). Retrieved from 维基百科, 自由的百科全书: https://zh.wikipedia.org/w/index.php?title=HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4&oldid=48639745

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/04/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
图像处理笔记(4)----OpenCV对象追踪
尝试找到一种方法来提取多个彩色对象,例如,同时提取红色,蓝色,绿色对象。 import cv2 as cv import numpy as np cap = cv.VideoCapture(0) while (1): #读取帧 _,frame = cap.read() #转换颜色空间BGR到HSV hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV) # #定义HSV中蓝色的范围 lower_blue = np.array([
小火柴棒
2020/09/11
4480
OpenCV 的颜色空间转换
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119589.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/09
5900
AI 图像智能修复老照片,效果惊艳到我了!| 附代码
近些年,基于深度学习的发展,计算机视觉在人工智能和深度学习的大背景下方兴未艾,与此同时,当越来越多的应用场景被挖掘出来时,也意味着计算机视觉的发展前景将无比广阔,其中图像处理技术就是最热门的应用之一,而最近一段时间,图像处理技术中最受欢迎的必须是图像修复功能,一键修复老照片等App应用,在社交网络上掀起一股潮流。
程序员小猿
2021/01/19
2.2K0
AI 图像智能修复老照片,效果惊艳到我了!| 附代码
05: 颜色空间转换
学习如何进行图片的颜色空间转换,视频中追踪特定颜色的物体。图片等可到文末引用处下载。
CodecWang
2021/12/07
7850
05: 颜色空间转换
OpenCV基础 | 4.色彩空间的转换
作者:小郭学数据 源自:快学python 学习视频可参见python+opencv3.3视频教学 基础入门[1] 今天写的是色彩空间的转换 1.常见色彩空间及色彩空间转换 RGB 红色:Red,绿色:Green,蓝色:Blue HSV 色相:Hue(0-180),饱和度:Saturation(0-255),明度;Value(0-255) 常用于颜色检测 HSL/HLS 色相:Hue、饱和度:Saturation、亮度:Lightness/Luminance 色相H:用角度度量,取值范围为0°~360°,从
快学Python
2021/08/09
5880
OpenCV 教程 03: 如何跟踪视频中的某一对象
视频的每一帧就是一张图片,跟踪视频中的某一对象,分解下来,其实就是在每一帧的图片中找到那个对象。
somenzz
2022/10/25
8050
OpenCV 教程 03: 如何跟踪视频中的某一对象
OpenCV 的颜色空间转换
1 # coding: utf-8 2 3 ''' 4 第13章主要介绍:颜色空间转换 5 ''' 6 7 import cv2 8 import numpy as np 9 10 ''' 11 经常用到的颜色空间转换是: BGR<->Gray 和 BGR<->HSV 12 cv2.cvtColor(input_image , flag),flag是转换类型:cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV 13 HSV(Hue , Saturation
py3study
2020/01/19
1.2K0
Python-OpenCV 处理图像(一):基本操作
第一种方式使用cv2.cv的LoadImage、ShowImage和SaveImage函数
bear_fish
2018/09/19
1.9K0
【计算机视觉】使用OpenCV处理色彩空间(Python版)
GRAY色彩空间通道指的是灰度图像,灰度图像的通常只有1个,值范围是[0, 255],一共256个灰度级别。其中0表示纯黑色,255表示纯白色。0~255之间的数值表示不同的亮度(即色彩的深浅程度)的深灰色或浅灰色。因此,一副灰度图能展示丰富的细节信息,如图1所示。
蒙娜丽宁
2023/03/08
2.4K0
【计算机视觉】使用OpenCV处理色彩空间(Python版)
OpenCV这么简单为啥不学——1.11、蓝背景证件照替换白色或红色
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
红目香薰
2023/02/10
1.1K0
OpenCV这么简单为啥不学——1.11、蓝背景证件照替换白色或红色
基于OpenCV的彩色空间互转
图像彩色空间互转在图像处理中应用非常广泛,而且很多算法只对灰度图有效;另外,相比RGB,其他颜色空间(比如HSV、HSI)更具可分离性和可操作性,所以很多图像算法需要将图像从RGB转为其他颜色空间,所以图像彩色互转是十分重要和关键的。
Datawhale
2020/06/23
2.7K0
opencv(4.5.3)-python(十)--改变色彩空间
在OpenCV中,有超过150种色彩空间转换方法。但我们只研究两种最广泛使用的方法:BGR ↔ Gray和BGR ↔ HSV。
用户9875047
2022/12/07
5470
opencv(4.5.3)-python(十)--改变色彩空间
基于OpenCV-python3实现抠图
在上一篇博客进行了证件照更换背景颜色,纯蓝色,红色,白色之间的替换,有人私信我,可以不可以把背景换成其他图片,而不是单纯的颜色填充。这在photoshop里面就是选中一个图层然后复制到另外一张图片上去,用代码实现的话和上篇博文换纯色背景思路完全一样,只是在替换颜色时候有了新变化。
py3study
2020/01/10
5.6K0
【python-opencv】转换颜色空间
OpenCV中有超过150种颜色空间转换方法。但是我们将研究只有两个最广泛使用的,BGR↔灰色和BGR↔HSV。
西西嘛呦
2020/08/26
1.2K0
【python-opencv】转换颜色空间
面经|2. 面试官:“除了RGB,你还知道哪些颜色通道?”
在我所做的一些项目中,目前使用颜色空间变换的比较少,目前就是看pix2pix-tensorflow中使用过,直接上图:
灿视学长
2021/05/28
2.9K0
OpenCV-Python学习(3)—— OpenCV 图像色彩空间转换
1. 学习目标 图像色彩空间; 函数说明与解释; 学习如何将图像从一个色彩空间转换到另一个,像BGR↔灰色,BGR↔HSV等; 学习 cv.cvtColor 函数的使用。 2. 常见色彩空间 3. 常见色彩空间说明 名称 说明 HSV 对计算机友好,区分各种色彩。 RGB 设备独立。 YCrCb Y分量表示信息,CrCb可以被压缩。 RGB是计算机显示器的标准支持色彩系统。 4. 常见色彩空间取值范围 名称 范围 HSV H:0-180;SV:0-255 RGB 0-255 5. 色彩空间转换
Rattenking
2022/10/04
9700
OpenCV-Python学习(3)—— OpenCV 图像色彩空间转换
[python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解
色彩空间又可以叫做色域,英文是Color Sapce,是一种人为建立,用于表示色彩的一种“坐标系统”,或者说是一种色彩访问的取值系统,用于描述色彩。了解色彩空间对我们今后使用opencv进行图像处理很重要,在今后对图像处理时将会涉及到色彩空间的内容,所以学习了解色彩空间是有必要的。
1_bit
2021/01/14
1.5K0
[python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解
Python OpenCV给证件照换底色
投简历、找工作这些事都需要证件照,有些还要求证件照背景颜色、尺寸大小,本文分享一下如果通过Python OpenCV来实现照片裁剪和更换背景色
用户9925864
2022/07/27
1.3K0
Python OpenCV给证件照换底色
Opencv 图像处理:图像通道、直方图与色彩空间
将彩色图像,分成b 、g 、r 3个单通道图像。方便我们对 BGR 三个通道分别进行操作。
timerring
2022/11/02
2.3K0
Opencv 图像处理:图像通道、直方图与色彩空间
OpenCV黑魔法之隐身衣 | 附源码
我计划分享一些有趣的实战项目,或许达不到商用的级别,但是希望能在大家做项目的时候能够提供一些思路!如果对你有所帮助,给我点赞 & 在看,让我知道对你有帮助哈!
AI算法与图像处理
2020/08/17
7050
相关推荐
图像处理笔记(4)----OpenCV对象追踪
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验