s1093705 作業5
膚色偵測Skin Color Detection
題目說明:
利用你所學的 顏色(Color)的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚
區域並將其標示出。(請用附件中的三張照片做測試)
開發環境:
- Windows 11
- Visual Studio Code
- Python 3.11.2
- Opencv 4.7.0
實作結果:
程式說明:
A. HSV色域
1.把GBR圖像轉換至HSV色域。
img_HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
2.設定遮罩,只通過皮膚的HSV色域範圍
H:0~17
S:15~170
V:0~255
HSV_mask = cv2.inRange(img_HSV, (0, 15, 0), (17,170,255)) 
HSV_mask = cv2.morphologyEx(HSV_mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8))
B. YCrCb色域
1. 把GBR圖像轉換至YCrCb色域。
img_HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
2.設定遮罩,只通過皮膚的HSV色域範圍
Y:0~255
Cr:135~180
Cb:85~135
YCrCb_mask = cv2.inRange(img_YCrCb, (0, 135, 85), (255,180,135)) 
YCrCb_mask = cv2.morphologyEx(YCrCb_mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8))
C. HSV色域 + YCrCb色域
1.將A、B兩者的遮罩混和,取兩者的優點,形成更強化的膚色偵測功能。
global_mask = cv2.bitwise_and(YCrCb_mask,HSV_mask)
global_mask = cv2.medianBlur(global_mask,3)
global_mask = cv2.morphologyEx(global_mask, cv2.MORPH_OPEN, np.ones((4,4), np.uint8))
2. 將照片跟遮罩混和,只取得膚色區域,非膚色區域顯示黑色。
skinHSV = cv2.bitwise_and(image, image, mask = global_mask)




 
 
 
留言
張貼留言