s1093332 作業5

  Assignment5 : 膚色偵測

功能:

    (a)利用你所學的 顏色(Color)的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚 區域並將其標示出。(請用附件中的三張照片做測試)

開發環境:Windows11 + Visual Studio 2022 + Opencv4.7.0

程式說明:

1.讀取圖片,複製一份作為輸出圖像。

  • imread((path)讀取圖片位置。
  • clone() :函數可用於複製一張圖像,返回一個與源圖像內容相同的新圖像。透過 clone() 函數返回的圖像,可以在不改變原圖像的情況下對其進行修改或處理。
2.將圖像轉換為HSV色彩空間
  • cvtColor(image, hsvImage, COLOR_BGR2HSV):用於將一個圖像從一種色彩空間轉換為另一種色彩空間。
3.定義膚色區間,建立遮罩,根據HSV色彩空間中的膚色區間,建立一個二值化的遮罩。
  • lower_bound是一個 Scalar 物件,用來表示膚色的下限範圍。在HSV色彩空間中,膚色的 H 值範圍通常在 0 到 20 之間,S 和 V 的範圍則比較大。
  • upper_bound:是一個 Scalar 變數,代表膚色的上限值。在 HSV 色彩空間中,色相(Hue)、飽和度(Saturation)、亮度(Value)的範圍分別是 0-179、0-255、0-255。
  • inRange()用於根據設定的上下閾值,將像素值在某個範圍內的圖像區域提取出來
4.使用形態學運算對遮罩進行處理,以去除小的雜訊和填補空洞。
  • getStructuringElement():用來建立結構元素。
  • morphologyEx():用於對二值圖像進行形態學操作。可以使用不同的內核(kernel)大小和形狀,以達到不同的效果。
5.將標記皮膚區域的部分用紅色填滿。
  • setTo():用於設定像素值的函數。它可以設定圖像中所有像素的值為一個常數值,或者可以使用一個遮罩矩陣將某些像素的值設定為常數值。
6.顯示輸入和輸出的影像
成果展示:

(一)

(二)

(三)

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1