camera = Webcam() lower_bound = np.array([0, 128, 0]) upper_bound = np.array([255, 255, 128]) width_range = (int(0.4 * camera.width), int(0.6 * camera.width)) height1_range = (int(0 * camera.height), int(0.33 * camera.height)) height2_range = (int(0.33 * camera.height), int(0.67 * camera.height)) height3_range = (int(0.67 * camera.height), int(1 * camera.height)) commander = Commander(height1_range[1], width_range[1] - width_range[0]) while True: frame = camera.get_current_frame() upper_frame = frame[height1_range[0]:height1_range[1], width_range[0]:width_range[1]].copy() middle_frame = frame[height2_range[0]:height2_range[1], width_range[0]:width_range[1]].copy() lower_frame = frame[height3_range[0]:height3_range[1], width_range[0]:width_range[1]].copy() cv2.rectangle(frame, (width_range[0], height1_range[0]), (width_range[1], height1_range[1]), (0, 255, 0), 1) cv2.rectangle(frame, (width_range[0], height2_range[0]), (width_range[1], height2_range[1]), (0, 255, 0), 1) cv2.rectangle(frame, (width_range[0], height3_range[0]), (width_range[1], height3_range[1]), (0, 255, 0), 1) line_info = [process_frame(upper_frame), process_frame(middle_frame), process_frame(lower_frame)] line_info = [(index, info[0], info[1]) for index, info in enumerate(line_info) if info is not None] line_info = None if line_info == [] else line_info[0] cv2.imshow('mainframe', frame) cv2.imshow('upperframe', upper_frame) cv2.imshow('middleframe', middle_frame) cv2.imshow('lowerframe', lower_frame) if cv2.waitKey(1) & 0xFF == ord('q'): break if line_info is not None: commander.receive_state(line_info)