def find_skin(self, img): img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) mask = hsv_filter_mask(img_hsv) back_proj = calc_back_proj(img_hsv, self.hist.hist, hsv=True) back_proj &= mask skin_bin = cv2.threshold(back_proj, self.skin_threshold, 255, cv2.THRESH_BINARY) return (back_proj, skin_bin[1])
def calc_hue_hist(img, debug = False, hsv = False, user_mask = None, \ h_size = 16, h_range = (0, 180)): if not hsv: img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hist_mask = hsv_filter_mask(img) if user_mask != None: hist_mask &= user_mask histogr = cv2.calcHist( [img], [0], hist_mask, [h_size], h_range ) cv2.normalize(histogr, histogr, 0, 255, cv2.NORM_MINMAX) if debug: print 'Histogram:\n', h h_samples_total = sum(map(lambda x: int(x[0]), h)) print 'Total samples in histogram:', h_samples_total return make_hist(h_size, h_range, histogr)
def calc_hue_hist(img, debug = False, hsv = False, user_mask = None, \ h_size = 16, h_range = (0, 180)): if not hsv: img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hist_mask = hsv_filter_mask(img) if user_mask != None: hist_mask &= user_mask histogr = cv2.calcHist([img], [0], hist_mask, [h_size], h_range) cv2.normalize(histogr, histogr, 0, 255, cv2.NORM_MINMAX) if debug: print 'Histogram:\n', h h_samples_total = sum(map(lambda x: int(x[0]), h)) print 'Total samples in histogram:', h_samples_total return make_hist(h_size, h_range, histogr)
def get_contours(self, img, req): img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) #if req.color == 'yellow': #Yellow Hue area tended to appear past the cube's area, so for Y. cubes move min. Saturation up to YELLOW_HSV_LOW[1] #mask = hsv_filter_mask(img_hsv, hsv_range_low = YELLOW_HSV_LOW) #else: mask = hsv_filter_mask(img_hsv, self.hsv_range_min[req.color], self.hsv_range_max[req.color]) back = calc_back_proj(img_hsv, self.known_histograms[req.color][1].hist, True) back &= mask back_filt = cv2.medianBlur(back, 5) back_filt = back.copy() conts = cv2.findContours(back_filt, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) if DEBUG: conts_img = self.img.copy() else: conts_img = None return conts, conts_img, back, back_filt