s1091404 作業5

 主題: 膚色偵測 Skin Color Detection

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

開發環境: Windows10, visual studio code, python310, opencv 4.5.4

功能說明: 

使用下列函式庫進行撰寫

用os函式庫找出檔案位置將圖片讀入

本次作業我使用HSV模型來判斷圖片中的膚色,先將圖片從BGR轉換成HSV,接著對轉換後的圖片做高斯濾波過濾掉雜訊,盡可能避免後續在判斷顏色時將不是皮膚的部分也標示出。

根據我試驗的結果,我將膚色的各項數值定在下列範圍中:

H: 0~40度和320~360度、S: 45~180、V: 60~255。建立一個大小和原圖相同的全黑圖片,此圖片用作mask圖,然後遍歷原圖的每一個像素,若像素的顏色符合這些範圍條件,則將mask圖中位置相對應的像素改為白色。如此可以得到二值圖,白色的部分為皮膚,其餘為黑色。

得到mask圖後,用bitwise_and將原圖和mask圖做AND運算,即可得到只保留皮膚的圖像

我們也可以利用這張圖在原圖上將皮膚的部分標示出來,找出圖片中不為黑色的像素,並將原圖中對應位置的像素塗成藍色,即完成將膚色標示出來的功能。

部分皮膚可能會因為被陰影遮蓋而無法畫出,或是因頭髮或少部分的背景顏色和皮膚顏色相近而被塗上顏色。

其餘兩張圖片也使用同樣的方法標示出皮膚區域,最後使用plt.show將三張照片的原圖及標示圖放在同一張畫面一同顯示。











留言

這個網誌中的熱門文章

rzwang Homework #1

s1101438 Homework #1

s1093309 作業6