s1093345 作業5
作業說明
- 主題:皮膚偵測Skin Color Detection
- 利用你所學的顏色(Color)的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。(請用附件中的三張照片測試)
圖一、Input Image
開發環境
- macOS 13.2.1
- Visual Studio Code 1.77.3
- Python 3.8.3
- OpenCV 4.6.0
- Numpy 1.21.5
實作過程
- 皮膚偵測
- 使用 cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 將計算輸入圖片 img 從 BGR 顏色轉換HSV顏色。
- 透過 np.array(hue, saturation, value) 定義膚色下限 skin_lower 以及 skin_upper 分別有色相(Hue)、飽和度(Saturation)、亮度(Value)等參數。皮膚上下限中,第一個參數 Hue 值範圍為0~25,第二個參數 Saturation 值範圍設置為48~190,第三個參數 Value 值範圍設置45~255。
- 補充說明:原先參照講義的參考 HSV 參數會有些區域無法偵測或是偵測到髮色,且有另外測試若為皮膚較黑的情況,故有將 HSV 的皮膚範圍參數值做稍微調整,盡可能做到更完全的皮膚偵測。
- 使用 cv2.inRange(img, skin_lower, skin_upper) 將計算轉為 HSV 的圖片 img ,使用先前的函數定義 skin_lower、skin_upper,進行區域範圍的取值。若為指定範圍的像素設為白色,範圍外的像素則設為黑色。
- 透過 np.zeros_like(img) ,創建一個與上述結果 img 相同的新圖像,並把原先白色區域的顏色設為紅色。
- 最後透過 cv2.addWeighted(img, alpha, red_img, beta) ,將原始圖像 img 與皮膚區域的紅色圖像 red_img 結合一起。
留言
張貼留言