HOWTO · Python
OpenCV cvtColor
本文的目的是瞭解 cvtColor() 方法的作用以及如何使用該方法將 rgb 影象轉換為 hsv 影象。我們還討論了 hsv 影象究竟在哪裡有用以及我們為什麼需要使用它。
本頁內容
本文旨在瞭解 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 格式的好處?
它在任何計算機視覺或機器學習專案中都很有用,因為每個區域都用其他顏色陰影表示。如果你只是對標有特定顏色的物件感興趣,那麼在這種情況下,你可以忽略其餘顏色區域並提取顏色區域的特定部分。