s1093332 作業5
Assignment5 : 膚色偵測
功能:
(a)利用你所學的 顏色(Color)的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚 區域並將其標示出。(請用附件中的三張照片做測試)
開發環境:Windows11 + Visual Studio 2022 + Opencv4.7.0
程式說明:
1.讀取圖片,複製一份作為輸出圖像。
- imread((path)讀取圖片位置。
- clone() :函數可用於複製一張圖像,返回一個與源圖像內容相同的新圖像。透過 clone() 函數返回的圖像,可以在不改變原圖像的情況下對其進行修改或處理。
2.將圖像轉換為HSV色彩空間
- cvtColor(image, hsvImage, COLOR_BGR2HSV):用於將一個圖像從一種色彩空間轉換為另一種色彩空間。
- lower_bound:是一個
Scalar
物件,用來表示膚色的下限範圍。在HSV色彩空間中,膚色的 H 值範圍通常在 0 到 20 之間,S 和 V 的範圍則比較大。 - upper_bound:是一個
Scalar
變數,代表膚色的上限值。在 HSV 色彩空間中,色相(Hue)、飽和度(Saturation)、亮度(Value)的範圍分別是 0-179、0-255、0-255。 - inRange():用於根據設定的上下閾值,將像素值在某個範圍內的圖像區域提取出來。
- getStructuringElement():用來建立結構元素。
- morphologyEx():用於對二值圖像進行形態學操作。可以使用不同的內核(kernel)大小和形狀,以達到不同的效果。
5.將標記皮膚區域的部分用紅色填滿。
- setTo():用於設定像素值的函數。它可以設定圖像中所有像素的值為一個常數值,或者可以使用一個遮罩矩陣將某些像素的值設定為常數值。
成果展示:
留言
張貼留言