def main(self): if not self.without_robot: self.last_time = time.time() print "[!!] capture white face first" while self.facenum < 6: if not self.without_robot and (time.time() - self.last_time > ROTATE_DELAY): self.save_color() frame = cv.QueryFrame(self.capture) if not frame: raise IOError, "Camera Error" cv.Resize(frame, self.img) cv.CvtColor(self.img, self.hsv, cv.CV_RGB2HSV) for iy in xrange(3): for ix in xrange(3): lefttop = (int(self.left_top[0] + self.one_side * 3 / 2 * ix), int(self.left_top[1] + self.one_side * 3 / 2 * iy)) rightbottom = (int(self.left_top[0] + self.one_side * 3 / 2 * ix + self.one_side), int(self.left_top[1] + self.one_side * 3 / 2 * iy + self.one_side)) col = cv.Avg(self.img[lefttop[1]:rightbottom[1], lefttop[0]:rightbottom[0]]) cv.Rectangle(self.img, lefttop, rightbottom, (0, 0, 0), cv.CV_FILLED) cv.Rectangle(self.img, (lefttop[0] + 3, lefttop[1] + 3), (rightbottom[0] - 3, rightbottom[1] - 3), col, cv.CV_FILLED) hsv_col = cv.Avg(self.hsv[lefttop[1]:rightbottom[1], lefttop[0]:rightbottom[0]]) #print hsv_col self.colors[iy][ix] = hsv_col[:] cv.ShowImage("cube_capture.py", self.img) c = cv.WaitKey(10) % 0x100 if c == 27: # ESC break elif self.without_robot and chr(c) == " ": self.save_color() #print self.colors_list if self.colors_list[-1]: r = self.process_colors() else: r = None cv.DestroyWindow("cube_capture.py") return r
def sample_frame(self, frame): # Get an average of the green channel in on the forehead cv.SetImageROI(frame, self.face_tracker.get_forehead()) sample = cv.Avg(frame)[1] cv.ResetImageROI(frame) return sample
def get_predator_distance(self, bb, depth): self.logger.debug("Bounding Box: " + str(bb)) if bb[0] < 0: bb[0] = 0 if bb[2] >= self.res['width']: bb[2] = self.res['width'] - 1 if bb[1] < 0: bb[1] = 0 if bb[3] >= self.res['height']: bb[3] = self.res['height'] - 1 dist_rect = cv.CreateImage((bb[2] - bb[0], bb[3] - bb[1]), cv.IPL_DEPTH_8U, 1) dist_rect = cv.GetSubRect(depth, (bb[0], bb[1], bb[2] - bb[0], bb[3] - bb[1])) return cv.Avg(dist_rect)[0]
hsvcs = [] den = 2 for i, p in enumerate(ep): if p[0] > rad and p[0] < W - rad and p[1] > rad and p[1] < H - rad: #valavg=val[int(p[1]-rad/3):int(p[1]+rad/3),int(p[0]-rad/3):int(p[0]+rad/3)] #mask=cv.CreateImage(cv.GetDims(valavg), 8, 1 ) print "p", p p = (int(round(p[0])), int(round(p[1]))) print "p", p print "sg", sg rad = int(rad) print "rad", rad col = cv.Avg(sgc[int(p[1] - rad / den):int(p[1] + rad / den), int(p[0] - rad / den):int(p[0] + rad / den)]) col = cv.Avg(sgc[int(p[1] - rad / den):int(p[1] + rad / den), int(p[0] - rad / den):int(p[0] + rad / den)]) cv.Circle(sg, p, rad, col, -1) if i == 4: cv.Circle(sg, p, rad, (0, 255, 255), 2) else: cv.Circle(sg, p, rad, (255, 255, 255), 2) hueavg = cv.Avg( hue[int(p[1] - rad / den):int(p[1] + rad / den), int(p[0] - rad / den):int(p[0] + rad / den)]) satavg = cv.Avg( sat[int(p[1] - rad / den):int(p[1] + rad / den), int(p[0] - rad / den):int(p[0] + rad / den)])
def main(): cap = cv.CaptureFromCAM(0) cv.NamedWindow("camera", cv.CV_WINDOW_NORMAL) cv.SetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_WIDTH, 720) cv.SetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_HEIGHT, 540) cols = int(cv.GetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_WIDTH)) rows = int(cv.GetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_HEIGHT)) grey = cv.CreateImage((cols, rows), 8, 1) cumulated = cv.CreateImage((cols, rows), 8, 1) equalize = True laplace = False settings = { "canny_avg": 10, } threshold1 = 600 threshold2 = 200 settings_names = sorted(settings.keys()) setting_current = 0 setting_name = settings_names[setting_current] while True: im = cv.QueryFrame(cap) cv.CvtColor(im, grey, cv.CV_BGR2GRAY) if equalize: cv.Smooth(grey, grey, param1=5, param2=5) cv.EqualizeHist(grey, grey) if laplace: cv.Canny(grey, grey, threshold1, threshold2) avg = cv.Avg(cumulated)[0] if avg > settings["canny_avg"] * 1.2: threshold1 *= 1.1 threshold2 = threshold1 / 2.5 if avg < settings["canny_avg"] / 1.2: threshold1 /= 1.1 threshold2 = threshold1 / 2.5 cv.ShowImage("camera", grey) key = cv.WaitKey(1) if key not in (-1, 1114085, 1245157): # None, block print("Key %d" % key) if key in ( # Capture one frame 1048675, # c 99, # c ): filenames = save_image(cap, 1) print("Capturing: %s" % ", ".join(list(filenames))) if key in ( # Capture ten frames 1114179, # C 1179715, # C (block) 65603, # C 131139, # C (block) ): filenames = save_image(cap, 10) print("Capturing: %s" % ", ".join(list(filenames))) elif key in ( # Toggle equalization 1114181, # e 1048677, # E 1179717, # E (block) 1245285, # e (block) 101, # e 65605, # E 131141, # E (block) 196709, # e (block) ): equalize = not equalize print("Equalize: %s" % equalize) elif key in ( # Toggle laplace 1179724, # l 1048684, # L (block( 1114188, # L 108, 65612, 131148, 196716, ): laplace = not laplace print("Laplace: %s" % laplace) elif key in ( # Increment value 1113938, # Up 65362, ): settings[setting_name] += 1 print("%s := %d" % (setting_name, settings[setting_name])) elif key in ( # Decrement value 1113940, # Down 65364, ): settings[setting_name] -= 1 print("%s := %d" % (setting_name, settings[setting_name])) elif key in ( # Next setting 1113939, # Right 65363, ): setting_current = (setting_current + 1) % len(settings_names) setting_name = settings_names[setting_current] print("%s : %d" % (setting_name, settings[setting_name])) elif key in ( # Prev setting 1113937, # Left 65361, ): setting_current = (setting_current - 1) % len(settings_names) setting_name = settings_names[setting_current] print("%s : %d" % (setting_name, settings[setting_name])) elif key in ( # Exit 27, # ESC 1048603, # ESC 1114193, # q 1048689, # Q 1179729, # Q (block) 1245297, # q (block) 113, 65617, 131153, 196721, ): break
cv.NamedWindow('right') cv.SetMouseCallback("cam", on_mouse) on_mouse(cv.CV_EVENT_LBUTTONDOWN, centerX, centerY, None, None) font = cv.InitFont(cv.CV_FONT_HERSHEY_PLAIN, 1.0, 1.0) M = 60 while True: img = cv.QueryFrame(capture) cv.CvtColor(img, im, cv.CV_RGB2GRAY) #cv.LogPolar(img, polar, (centerX, centerY), M+1, cv.CV_INTER_NN + cv.CV_WARP_FILL_OUTLIERS ) cv.And(im, lm, lt) leftBrightness = cv.Avg(im, mask=lm) cv.Rectangle(lt, (0, 0), (32, 32), leftBrightness, thickness=-1) cv.PutText(lt, "%3.0f" % leftBrightness[0], (3,20), font, cv.RealScalar(0)) cv.And(im, rm, rt) rightBrightness = cv.Avg(im, mask=rm) cv.Rectangle(rt, (0, 0), (32, 32), rightBrightness, thickness=-1) cv.PutText(rt, "%3.0f" % rightBrightness[0], (3,20), font, cv.RealScalar(0)) cv.ShowImage('cam', im) cv.ShowImage('left', lt) cv.ShowImage('right', rt) key = cv.WaitKey(10) #print "key ",key if key == 27: