Esempio n. 1
0
def run_object_detection(config):
    # Set variables
    camera_width = 320
    camera_height = 240
    window_name = "Object Detection Demo"
    input_width = config.IMAGE_SIZE[1]
    input_height = config.IMAGE_SIZE[0]

    vc = cv2.VideoCapture(0)
    vc.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, camera_width)
    vc.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, camera_height)
    vc.set(cv2.cv.CV_CAP_PROP_FPS, 15)

    pool = Pool(processes=1)
    result = False
    fps = 1.0

    q_save = Queue()
    q_show = Queue()

    grabbed, camera_img = vc.read()

    q_show.put(camera_img.copy())
    input_img = camera_img.copy()

    #  ----------- Beginning of Main Loop ---------------
    while True:
        m1 = MyTime("1 loop of while(1) of main()")
        pool_result = pool.apply_async(run_inference, (input_img, ))
        is_first = True
        while True:
            sleep(0.01)
            grabbed, camera_img = vc.read()
            if is_first:
                input_img = camera_img.copy()
                is_first = False
            q_save.put(camera_img.copy())
            if not q_show.empty():
                window_img = q_show.get()
                if result:
                    window_img = add_rectangle(config.CLASSES, window_img,
                                               result,
                                               (input_height, input_width))
                    window_img = add_fps(window_img, fps)
                # ---------- END of if result != False -----------------

                cv2.imshow(window_name, window_img)
                key = cv2.waitKey(2)  # Wait for 2ms
                if key == 27:  # ESC to quit
                    return

            if pool_result.ready():
                break
        # -------------- END of wait loop ----------------------
        q_show = clear_queue(q_show)
        q_save, q_show = swap_queue(q_save, q_show)
        result, fps = pool_result.get()
        m1.show()
Esempio n. 2
0
def show_object_detection(img, result, fps, window_height, window_width,
                          config):
    window_img = resize(img, size=[window_height, window_width])

    input_width = config.IMAGE_SIZE[1]
    input_height = config.IMAGE_SIZE[0]
    window_img = add_rectangle(config.CLASSES, window_img, result,
                               (input_height, input_width))
    img = add_fps(window_img, fps)

    window_name = "Object Detection Demo"
    cv2.imshow(window_name, window_img)