Beispiel #1
0
 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])
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
 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