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