s1093306 作業5

 一.作業說明 : 

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

二.開發環境 : 

  • 作業系統:    Windows10
  • 編譯器:     Visual Studio 2019
  • 程式語言:    C++
  • OpenCV版本:   4.7.0 

三.程式說明 :

1.讀圖:    用cv2.imread()讀取圖片
2.將圖像轉換為HSV和YCrCb色彩空間:    分別用cv2.cvtColor將RGB圖片轉成HSVYCrCb
3.將兩個的色彩空間設在膚色可被偵測的像素區間然後建立黑白遮罩:
使用 inRange()限制偵測範圍。
限定HSV的範圍:0<H<50,41<S<255,0<V<255(色相(H),飽和度(S),明度(V))
限定YCrCb的範圍:  55<Y<240,55<Cr<240,55<Cb<240(Y(亮度),Cb(藍色色度),Cr(紅色色度)
4.
用bitwise_and()將HSV和YcrCb色彩空間篩選結果合成mask。
5.對遮罩進行處理,以去除小的雜訊以及填補空洞。
使用getStructuringElement()用來建立結構元素先分析固定區域內的像素以提取特定的圖像結構
使用erode()、dilate()函式對遮罩執行腐蝕和擴張操作來去除小雜訊
6.用setTo()將mask設定像素值為綠色。
7.addWeighted()將原圖和mask合成呈現。
四.結果圖 :
(一)


(二)


(三)






      留言

      這個網誌中的熱門文章

      rzwang Homework #1

      s1093350 Homework #2

      s1091537 Homework #1