画像に対して肌色検出を行おうと考えています。
以上のように画像を肌色検出して、白黒の画像に変換したいと考えています。
以上の画像では肌色のHSVの領域をうまく表現できず、綺麗に白黒画像に変換することができません。
画像のHSVの領域を求めてうまく白黒に変換することはできるのでしょうか。
ソースコード
import cv2 import os import numpy as np import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt from PIL import Image def mask(piet): piet_hsv = cv2.cvtColor(piet, cv2.COLOR_BGR2HSV) skin_min = np.array([0, 30, 60], np.uint8) skin_max = np.array([20, 150, 255], np.uint8) threshold_skin_img = cv2.inRange(piet_hsv, skin_min, skin_max) threshold_skin_img = cv2.cvtColor(threshold_skin_img, cv2.COLOR_GRAY2RGB) return(threshold_skin_img) image = cv2.imread('a.jpg') image = mask(image) cv2.imshow('image', image) cv2.waitKey(0) cv2.destroyAllWindows()
よろしくお願い致します。
検出したいのは「肌色」と「手」どちらでしょうか?たとえば、手なら「opencv 物体検出 手」でキーワード検索すると参考サイトがHITするかと。
回答2件
あなたの回答
tips
プレビュー