OpenCV cvtColor
本文旨在了解 cvtColor()
方法的作用以及如何使用此方法将 rgb
图像转换为 OpenCV 中的 hsv
图像。我们还讨论了 hsv
图像在哪里有用以及我们为什么需要使用它。
使用 cvtColor()
方法在 OpenCV 中创建 HSV 图像
在这里,我们添加了一张显示 RGB
和 HSV
图像之间差异的图像。每当你考虑 RGB
颜色的任何图像时,每个像素都有代表红色、绿色和蓝色的三个值。
类似地,在 HSV
颜色模型图像中,每个像素都用色调、饱和度和值这三个值表示。色调代表角度,饱和度代表颜色的饱和度,数值代表颜色的强度。
这样一来,HSV
颜色模型就起作用了。当我们将任何 RGB
图像转换为 HSV
图像时,每个像素值都会转换为色调饱和度和值格式;我们将此颜色模型称为 HSV
。
让我们看看如何将这个 RGB
颜色模型转换为 HSV
颜色模型图像。
首先,我们正在导入包 opencv
和 numpy
,在下一行中,我们尝试使用 VideoCapture()
访问我们的摄像头并传递零,因此它将访问该系统上的主摄像头.
我们将它们存储在 V
对象中,无论我们获得什么视频源。
import numpy as np
import cv2
V=cv2.VideoCapture(0)
一旦我们从相机捕获了视频,我们将遍历该视频中的每一帧。现在我们需要从视频捕获中读取每一帧,而这一帧只不过是我们视频中的一个图像,它是 numpy
数组的形式。
RET,F=V.read()
cv2.imshow('BGR Frame',F)
这是原始帧,我们将使用 cvtColor()
方法将帧转换为 HSV
。这种方法为用户带来了不同的颜色模型,其中最常用的方法是 COLOR_BGR2HSV
。
我们必须在 cvtColor()
中传递两个参数;一是我们的原始图像,二是我们要对这个图像或一帧进行什么样的转换。我们将 COLOR_BGR2HSV
方法作为参数传递,这意味着我们告诉 cvtColor()
将此图像颜色从 BGR
转换为 HSV
。
import numpy as np
import cv2
V=cv2.VideoCapture(0)
while True:
RET,F=V.read()
cv2.imshow('BGR Frame',F)
HSV=cv2.cvtColor(F,cv2.COLOR_BGR2HSV)
cv2.imshow('HSV Frame',HSV)
if cv2.waitKey(1)==ord('q'):
break
V.release()
cv2.destroyAllWindows()
我们可以看到我们的程序正在运行,在左侧,我们将从相机访问的原始内容以 BGR
格式放置。
在右侧,我们可以看到色相饱和度值图像,并且在这部分中,不同的颜色深浅包含在特定的颜色范围内。
让我们谈谈为什么我们需要将此图像转换为 HSV
格式以及将 BGR
图像转换为 HSV
格式的好处?
它在任何计算机视觉或机器学习项目中都很有用,因为每个区域都用其他颜色阴影表示。如果你只是对标有特定颜色的对象感兴趣,那么在这种情况下,你可以忽略其余颜色区域并提取颜色区域的特定部分。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn