一、作業說明
利用你所學的Color顏色的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。
二、作業環境&語言
Windows 10
Visual Studio Code 1.54.3
OpenCV 4.5.1.48
Python 3.8.3
Numpy 1.19.5
三、實作方法與分析
imread讀取圖片
先用GuassianBlur 處理掉過度細節及雜訊
HSV:
用cv2.cvtColor() 將圖片轉成hsv color space
決定膚色的範圍 並做出mask
一開始決定為 0<h<40 , 50<s<130 , 50<v<255:
後面的樹葉跟偏紅色的衣服都沒刪掉所以將 h 改成 5<h<20:
膚色較深的部分被刪掉了且沙子很多沒刪掉,所以將 s 改成 70<s<150,v改成20<v<255:標示出來:
---------------------------------------------------------------------------------------------------------
RGB:
一開始將膚色範圍設成: R>95 and G>40 and B>20 and R>G and R>B:
樹葉跟偏紅色的衣服都沒刪掉,所以將R跟綠G差距 和 R跟B的差距限制加大
偏黑的膚色應該是因為R,G,B的數值比較相近所以也被刪掉了,如果考慮進來可能會導致後面的樹木沒刪掉。標示出來:
---------------------------------------------------------------------------------------------------------
YCbCr:
一開始設的膚色範圍為
HSV用角度表示所有顏色,比較容易篩選最初的顏色
沒有留言:
張貼留言