OpenCV cvtColor

Salman Mehmood 2024年2月15日
OpenCV cvtColor

本文旨在了解 cvtColor() 方法的作用以及如何使用此方法将 rgb 图像转换为 OpenCV 中的 hsv 图像。我们还讨论了 hsv 图像在哪里有用以及我们为什么需要使用它。

使用 cvtColor() 方法在 OpenCV 中创建 HSV 图像

在这里,我们添加了一张显示 RGBHSV 图像之间差异的图像。每当你考虑 RGB 颜色的任何图像时,每个像素都有代表红色、绿色和蓝色的三个值。

RGB 和 HSV 图像

类似地,在 HSV 颜色模型图像中,每个像素都用色调、饱和度和值这三个值表示。色调代表角度,饱和度代表颜色的饱和度,数值代表颜色的强度。

这样一来,HSV 颜色模型就起作用了。当我们将任何 RGB 图像转换为 HSV 图像时,每个像素值都会转换为色调饱和度和值格式;我们将此颜色模型称为 HSV

让我们看看如何将这个 RGB 颜色模型转换为 HSV 颜色模型图像。

首先,我们正在导入包 opencvnumpy,在下一行中,我们尝试使用 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 格式放置。

在右侧,我们可以看到色相饱和度值图像,并且在这部分中,不同的颜色深浅包含在特定的颜色范围内。

在 OpenCV 中使用 cvtColor 方法创建 HSV 图像

让我们谈谈为什么我们需要将此图像转换为 HSV 格式以及将 BGR 图像转换为 HSV 格式的好处?

它在任何计算机视觉或机器学习项目中都很有用,因为每个区域都用其他颜色阴影表示。如果你只是对标有特定颜色的对象感兴趣,那么在这种情况下,你可以忽略其余颜色区域并提取颜色区域的特定部分。

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

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

相关文章 - Python OpenCV