Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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]
Ejemplo n.º 4
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)])
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
  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: