Exemplo n.º 1
0
    def run(self):

        try:
            print "starting web server"
            # initialise web server which will display final image
            web = Webserver(balloon_config.config.parser,
                            (lambda: self.frame_filtered))

            print "initialising camera"
            # initialise video capture
            balloon_video.init_camera()

            print "Ready to go!"

            while (True):
                # get a frame
                frame = balloon_video.capture_image()

                # Convert BGR to HSV
                hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

                # get latest colour filters
                self.read_config_file(False)

                # use trackbar positions to filter image
                colour_low = np.array([self.h_low, self.s_low, self.v_low])
                colour_high = np.array([self.h_high, self.s_high, self.v_high])

                # Threshold the HSV image
                mask = cv2.inRange(hsv_frame, colour_low, colour_high)

                #PAPOU_MOD Blur & Erode
                blurred = cv2.GaussianBlur(mask, (3, 3), 0)

                # Erode
                erode_kernel = np.ones((3, 3), np.uint8)
                eroded_img = cv2.erode(blurred, erode_kernel, iterations=2)

                # dilate
                dilate_kernel = np.ones((10, 10), np.uint8)
                dilated_img = cv2.dilate(eroded_img,
                                         dilate_kernel,
                                         iterations=1)

                # Bitwise-AND mask and original image
                self.frame_filtered = cv2.bitwise_and(frame,
                                                      frame,
                                                      mask=dilated_img)

        # handle interrupts
        except:
            print "interrupted, exiting"

        # exit and close web server
        print "exiting..."
        web.close()
Exemplo n.º 2
0
    def main(self):
        web = Webserver(balloon_config.config.parser, (lambda: self.frame))

        # initialise camera
        balloon_video.init_camera()
        video_writer = balloon_video.open_video_writer()

        # get start time
        start_time = time.time()

        # loop for 10 seconds looking for circles
        while (time.time() - start_time < 20):

            # Take each frame
            frame = balloon_video.capture_image()
            self.frame = frame

            # is there the x & y position in frame of the largest balloon
            found_in_image, xpos, ypos, size = self.analyse_frame(frame)

            # display image
            cv2.imshow('frame', frame)

            # write the frame
            video_writer.write(frame)

            # exit if user presses ESC
            k = cv2.waitKey(5) & 0xFF
            if k == 27:
                break

        print "exiting..."
        web.close()

        # uncomment line below if window with real-time video was displayed
        cv2.destroyAllWindows()

        # release camera
        balloon_video.close_camera()
Exemplo n.º 3
0
from web_server import Webserver
try:
    w = Webserver()
except OSError:
    import machine
    machine.reset()
    print('OSError, im do machine.restart()')
w.start()