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()
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()
from web_server import Webserver try: w = Webserver() except OSError: import machine machine.reset() print('OSError, im do machine.restart()') w.start()