Skip to content

Instantly share code, notes, and snippets.

@ozw-sei
Last active December 19, 2015 14:58
Show Gist options
  • Select an option

  • Save ozw-sei/5972718 to your computer and use it in GitHub Desktop.

Select an option

Save ozw-sei/5972718 to your computer and use it in GitHub Desktop.
Skindetecter
#coding:utf-8
import cv
import cv2
import sys
filename = sys.argv[1]
input_img = cv.LoadImage(filename)
# HSVImages
HSVImage = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,3)
HImage = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,1)
SImage = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,1)
VImage = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,1)
# sub
HSVImagePro = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,3)
HImagePro = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,1)
SImagePro = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,1)
VImagePro = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,1)
# mask image
MaskImage = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,1)
# dispImage
dispImage = cv.CreateImage(cv.GetSize(input_img),cv.IPL_DEPTH_8U,3)
#HSVに変換
cv.CvtColor(input_img,HSVImage,cv.CV_BGR2HSV)
#H , S , V 成分へ分解する
cv.Split(HSVImage , HImage , SImage , VImage , None)
#スレッショルドで肌色領域を抽出
cv.Threshold(HImage , HImagePro , 20 , 255 , cv.CV_THRESH_BINARY_INV)
cv.Threshold(SImage , SImagePro , 51 , 255 , cv.CV_THRESH_BINARY)
cv.Threshold(VImage , VImagePro , 0 , 255 , cv.CV_THRESH_BINARY)
#論理積でマスク画像の作成
cv.And(HImagePro , SImagePro , MaskImage)
cv.And(MaskImage , VImagePro , MaskImage)
#マスク画像のノイズを消す
cv.Erode( MaskImage , MaskImage , None , 1)
cv.Dilate( MaskImage , MaskImage , None , 2)
cv.Erode( MaskImage , MaskImage , None , 1)
#最終出力画像をゼロクリア
cv.Zero(dispImage)
#マスクをかけた入力画像を作成
cv.Copy( input_img, dispImage , MaskImage)
cv.ShowImage("input_imgput",dispImage)
cv.ShowImage("H",HImagePro)
cv.ShowImage("S",SImagePro)
cv.ShowImage("V",VImagePro)
cv.ShowImage("Mask",MaskImage)
while(True):
cv.WaitKey()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment