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