s1081440 作業5

 

主題: 皮膚偵測 Skin Color Detection

一、 題目說明:

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


二、開發環境:

Windows 11+Visual Studio Code+Python 3.10.4+openCV 4.7.0


三、程式碼

import numpy as np
import cv2

img1 = cv2.imread('img1.jpg', cv2.COLOR_BGR2HSV)
img2 = cv2.imread('img2.jpg', cv2.COLOR_BGR2HSV)
img3 = cv2.imread('img3.jpg', cv2.COLOR_BGR2HSV)


def skin_detect(image):
    # 定義皮膚的顏色區間
    lower = np.array([0, 48, 80], dtype="uint8")
    upper = np.array([20, 255, 255], dtype="uint8")

    # 將圖片顏色由RGB顏色空間轉為HSV顏色空間,並根據先前定義的膚色區間製作mask
    converted = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    skinMask = cv2.inRange(converted, lower, upper)

    # 將一些被誤認為皮膚的區間刪除
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11, 11))
    skinMask = cv2.erode(skinMask, kernel, iterations=2)
    skinMask = cv2.dilate(skinMask, kernel, iterations=2)

    # 利用高斯模糊將mask邊緣的noise緩和
    skinMask = cv2.GaussianBlur(skinMask, (3, 3), 0)

    # 輸出結果
    skin = cv2.bitwise_and(image, image, mask=skinMask)
    cv2.imshow("images", np.hstack([image, skin]))
    cv2.waitKey(0)


skin_detect(img1)
skin_detect(img2)
skin_detect(img3)

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1