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_lowerskin_upper,進行區域範圍的取值。若為指定範圍的像素設為白色,範圍外的像素則設為黑色。
    • 透過 np.zeros_like(img) ,創建一個與上述結果 img 相同的新圖像,並把原先白色區域的顏色設為紅色。
    • 最後透過 cv2.addWeighted(img, alpha, red_img, beta) ,將原始圖像 img 與皮膚區域的紅色圖像 red_img 結合一起。

                    執行結果

                    • 偵測皮膚結果

                    o   圖片讀取:程式碼中的 cv2.imread(‘path’) 更改所需讀取圖片路徑。

                    o   執行程式:python 1093345_hw5






                    圖二 、偵測皮敷圖像之輸出結果

                    影片Demo






                    影片、程式Demo





                    留言

                    這個網誌中的熱門文章

                    rzwang Homework #1

                    s1093350 Homework #2

                    s1091537 Homework #1