OpenCV cvtColor

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 格式的好处?

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

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: 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