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