def _detectSkin(self, bgrimg): hsvimg = im.bgr2hsv(bgrimg) h, s, v = im.split3(bgrimg) skin_mask = cv.CreateImage(im.size(hsvimg), cv.IPL_DEPTH_8U, 1) h_mask = cv.CreateImage(im.size(hsvimg), cv.IPL_DEPTH_8U, 1) v_mask = cv.CreateImage(im.size(hsvimg), cv.IPL_DEPTH_8U, 1) v_mask = self.checkRange(v, self.v_low, self.v_high) h_mask = self.checkRange(h, self.h_low, self.h_high) cv.And(h_mask, v_mask, skin_mask) return skin_mask
def _detectSkin(self, bgrimg): hsvimg = im.bgr2hsv(bgrimg) h,s,v = im.split3(bgrimg) skin_mask = cv.CreateImage(im.size(hsvimg), cv.IPL_DEPTH_8U, 1) h_mask = cv.CreateImage(im.size(hsvimg), cv.IPL_DEPTH_8U, 1) v_mask = cv.CreateImage(im.size(hsvimg), cv.IPL_DEPTH_8U, 1) v_mask = self.checkRange(v, self.v_low, self.v_high) h_mask = self.checkRange(h, self.h_low, self.h_high) cv.And(h_mask, v_mask, skin_mask) return skin_mask
def checkRange(self, src, lowBound, highBound): size = im.size(src) mask = cv.CreateImage(size, cv.IPL_DEPTH_8U, 1) gt_low = cv.CreateImage(size, cv.IPL_DEPTH_8U, 1) cv.CmpS(src, lowBound, gt_low, cv.CV_CMP_GT) lt_high = cv.CreateImage(size, cv.IPL_DEPTH_8U, 1) cv.CmpS(src, highBound, lt_high, cv.CV_CMP_LT) cv.And(gt_low, lt_high, mask) return mask
def detectSkin(self, bgrimg): img_temp = cv.CreateImage(im.size(bgrimg), 8, 3) cv.Smooth(bgrimg, img_temp, cv.CV_GAUSSIAN, 5, 5) for i in range(3): cv.Smooth(img_temp, img_temp, cv.CV_GAUSSIAN, 5, 5) #cv.ShowImage("Capture from camera", img_temp) skin = self._detectSkin(img_temp) return skin
def detectSkin(self, bgrimg): img_temp = cv.CreateImage(im.size(bgrimg), bgrimg.depth, bgrimg.nChannels) #cv.SaveImage("original.png", bgrimg) cv.Smooth(bgrimg, img_temp, cv.CV_MEDIAN, 15)#, 0, 20, 20) #cv.SaveImage("smooth.png", img_temp) cv.ShowImage("Capture from camera", img_temp) #skin_o = self._detectSkin(bgrimg) #cv.SaveImage("skin_o.png", skin_o) skin = self._detectSkin(img_temp) #cv.SaveImage("skin_s.png", skin) return skin
def detectSkin(self, bgrimg): img_temp = cv.CreateImage(im.size(bgrimg), bgrimg.depth, bgrimg.nChannels) #cv.SaveImage("original.png", bgrimg) cv.Smooth(bgrimg, img_temp, cv.CV_MEDIAN, 15) #, 0, 20, 20) #cv.SaveImage("smooth.png", img_temp) cv.ShowImage("Capture from camera", img_temp) #skin_o = self._detectSkin(bgrimg) #cv.SaveImage("skin_o.png", skin_o) skin = self._detectSkin(img_temp) #cv.SaveImage("skin_s.png", skin) return skin
def segment(self, bgrimg): segmented = cv.CreateImage(im.size(bgrimg), bgrimg.depth, bgrimg.nChannels) cv.PyrSegmentation(bgrimg, segmented, self.storage, 3, 188, 60) return segmented