class VideoDetect(object):

    def __init__(self):
        self.__imgdet = ImageDetect()

    def detect(self, source, destination):
        clip, frames = VideoFileClip(source), []
        for frame in clip.iter_frames():
            items = self.__imgdet.annotations(frame)
            frame = self.__imgdet.label_image(frame, items)
            frames.append(frame)
        clip = ImageSequenceClip(frames, fps=clip.fps)
        clip.write_videofile(destination, audio=False)
Пример #2
0
class RealtimeDetect(object):
    def __init__(self):
        self.__imgdet = ImageDetect()
        self.__camera = cv2.VideoCapture(0)

    def detect(self):
        while True:
            ret, image = self.__camera.read()
            if ret:
                items = self.__imgdet.annotations(image)
                image = self.__imgdet.label_image(image, items)
                cv2.imshow('Image Detection', image)
                if cv2.waitKey(25) & 0xFF == ord('q'):
                    break
        self.__camera.release()
        cv2.destroyAllWindows()
Пример #3
0
def main():
    print('[Info]Start program')
    # キーボーボクラスの初期化
    key = KeyBoard()

    # モータコントロールクラスの初期化
    moter = MotorControl()
    moter.setup()

    # 画像認識クラス
    resolution = (WIDTH, HEIGHT)
    img = ImageDetect(resolution)

    # ボールを認識するときに使うしきい値
    ball_lower = [170, 100, 100]
    ball_upper = [180, 255, 255]

    # ゴールを認識するときに使うしきい値
    goal_lower = [100, 100, 100]
    goal_upper = [115, 255, 255]

    while True:
        # ボールの画像を取得
        img.get_image(ball_lower, ball_upper)
        img.view_image()

        #ゴールの画像を取得
        img.get_image(goal_lower, goal_upper)
        img.view_image()

        # キー入力を取得
        c = key.get_key()
        # キー入力で動作
        #key_ctrl(c, moter)

        # 'q' が押された場合は終了
        if c == 'q':
            moter.set_target_velocity(0, 0)
            break
Пример #4
0
def main():
    print('[Info]Start program')
    # キーボーボクラスの初期化
    key = KeyBoard()

    # モータコントロールクラスの初期化
    moter = MotorControl()
    moter.setup()

    # 画像認識クラス
    img = ImageDetect()

    # ボールを認識するときに使うしきい値
    ball_lower = [170, 100, 100]
    ball_upper = [180, 255, 255]

    while True:
        # 画像を取得
        img.get_image(ball_lower, ball_upper)
        img.view_image()

        # キー入力を取得
        c = key.get_key()

        # キーに値が設定されている場合
        if c != None:
            if c == 'w':
                msg = '前進  :'
                moter.set_target_velocity(MAX_VEL, MAX_VEL)
            elif c == 'a':
                msg = '左旋回:'
                moter.set_target_velocity(MIN_VEL, MAX_VEL)
            elif c == 's':
                msg = '停止  :'
                moter.set_target_velocity(0, 0)
            elif c == 'd':
                msg = '停止  :'
                moter.set_target_velocity(MAX_VEL, MIN_VEL)
            elif c == 'x':
                msg = '後退  :'
                moter.set_target_velocity(MIN_VEL, MIN_VEL)
            print(msg + c)

        # 'q' が押された場合は終了
        if c == 'q':
            moter.set_target_velocity(0, 0)
            break
Пример #5
0
    ep_sensor.sub_distance(freq=20, callback=sub_data_handler)

    # 机械臂回中
    ep_arm.recenter().wait_for_completed()
    ARM_POS = POS_MID
    ep_arm.moveto(x=180, y=ARM_POS).wait_for_completed()
    ep_gripper.open(power=50)
    time.sleep(1.5)
    ep_gripper.pause()

    # 按顺时针持续旋转
    w_speed = config['wheel_speed']
    ep_chassis.drive_wheels(w1=-w_speed, w2=w_speed, w3=w_speed, w4=-w_speed)

    # 开启图像检测线程
    thread_detect = ImageDetect(ep_camera, config)
    thread_detect.start()

    # 开始网球检测及运动控制
    noFound = 0
    while global_var.run_state:
        global_var.tof_counts += 1
        if global_var.tof_counts > 50:
            # 深度传感器一段时间未上报数据, 需要重新订阅
            ep_sensor.unsub_distance()
            ep_sensor.sub_distance(freq=20, callback=sub_data_handler)

        if global_var.distance[0] < config['tof_distance_min']:
            # 前方深度传感器距离小于170mm
            ep_chassis.drive_wheels(w1=0, w2=0, w3=0, w4=0)
            ep_chassis.move(x=-0.3, y=0.3, z=0, xy_speed=0.5).wait_for_completed()
Пример #6
0
def main():
    print('[Info]Start program')
    # キーボーボクラスの初期化
    key = KeyBoard()

    # モータコントロールクラスの初期化
    moter = MotorControl()
    moter.setup()

    # 画像認識クラス
    resolution = (WIDTH, HEIGHT)
    img = ImageDetect(resolution)

    # ボールを認識するときに使うしきい値
    ball_lower = [170, 100, 100]
    ball_upper = [180, 255, 255]

    # ゴールを認識するときに使うしきい値
    goal_lower = [100, 100, 100]
    goal_upper = [115, 255, 255]

    while True:
        # ボールの画像を取得
        rect = img.get_image(ball_lower, ball_upper)
        b_x0 = rect[0]
        b_x1 = rect[0] + rect[2]
        b_y0 = rect[1]
        b_y1 = rect[1] + rect[3]
        # 画像を表示
        img.view_image()

        # ゴールの画像を取得
        img.get_image(goal_lower, goal_upper)
        # 画像を表示
        img.view_image()

        # ボールを認識していない
        if b_x0 == 0 and b_x1 == 0:
            moter.set_target_velocity(0, 0)
        else:
            # 画面の右側にボールがある
            if b_x0 >= (WIDTH / 2) and b_x1 >= (WIDTH / 2):
                moter.set_target_velocity(40, -40)
            # 画面の左側にボールがある
            elif b_x0 < (WIDTH / 2) and b_x1 < (WIDTH / 2):
                moter.set_target_velocity(-40, 40)
            # ボールに近づいた
            elif b_x1 * b_y1 >= 76000:
                moter.set_target_velocity(0, 0)
            else:
                moter.set_target_velocity(150, 150)

        # キー入力を取得
        c = key.get_key()
        # キー入力で動作
        #key_ctrl(c, moter)

        # 'q' が押された場合は終了
        if c == 'q':
            moter.set_target_velocity(0, 0)
            break
Пример #7
0
 def __init__(self):
     self.__imgdet = ImageDetect()
     self.__camera = cv2.VideoCapture(0)
Пример #8
0
def main():
    print('[Info]Start program')
    # キーボーボクラスの初期化
    key = KeyBoard()

    # モータコントロールクラスの初期化
    moter = MotorControl()
    moter.setup()

    # 画像認識クラス
    resolution = (WIDTH, HEIGHT)
    img = ImageDetect(resolution)

    # ボールを認識するときに使うしきい値
    ball_lower = [170, 100, 100]
    ball_upper = [180, 255, 255]

    # ゴールを認識するときに使うしきい値
    goal_lower = [100, 100, 100]
    goal_upper = [115, 255, 255]

    # 初期状態
    state = INIT

    while True:
        # ボールの画像を取得
        rect = img.get_image(ball_lower, ball_upper)
        b_x0 = rect[0]
        b_x1 = rect[0] + rect[2]
        b_y0 = rect[1]
        b_y1 = rect[1] + rect[3]
        # 画像を表示
        img.view_image()

        # ゴールの画像を取得
        rect = img.get_image(goal_lower, goal_upper)
        g_x0 = rect[0]
        g_x1 = rect[0] + rect[2]
        g_y0 = rect[1]
        g_y1 = rect[1] + rect[3]
        # 画像を表示
        img.view_image()

        # 初期状態
        if state == INIT:
            # ボールを検出した
            if b_x0 > 0 and b_x1 > 0:
                state = DETECT_BALL
            else:
                pass
        # ボール検出状態
        elif state == DETECT_BALL:
            # 画面の右側にボールがある
            if b_x0 >= (WIDTH / 2) and b_x1 >= (WIDTH / 2):
                moter.set_target_velocity(40, -40)
            # 画面の左側にボールがある
            elif b_x0 < (WIDTH / 2) and b_x1 < (WIDTH / 2):
                moter.set_target_velocity(-40, 40)
            elif b_x1 * b_y1 >= 76000:
                state = DETECT_GOAL
            else:
                moter.set_target_velocity(150, 150)
        # ゴール検出状態
        elif state == DETECT_GOAL:
            # 画面の右側にボールがある
            if g_x0 >= (WIDTH / 2) and g_x1 >= (WIDTH / 2):
                moter.set_target_velocity(40, -40)
            # 画面の左側にボールがある
            elif g_x0 < (WIDTH / 2) and g_x1 < (WIDTH / 2):
                moter.set_target_velocity(-40, 40)
            elif g_x1 * g_y1 >= 75000 and g_x0 < 10:  #76000
                state = SHOOT
            else:
                moter.set_target_velocity(150, 150)
        # シュート状態
        elif state == SHOOT:
            # モータをストップする
            moter.set_target_velocity(-50, -50)
            time.sleep(0.3)
            moter.set_target_velocity(MAX_VEL, MAX_VEL)
            time.sleep(0.5)
            state = STOP
            print("[Info]Shoot!!")
        elif state == STOP:
            # モーターをストップする
            moter.set_target_velocity(0, 0)
        else:
            pass

        print('[Info]state:%d' % state)
        # キー入力を取得
        c = key.get_key()
        # キー入力で動作
        #key_ctrl(c, moter)

        # 'q' が押された場合は終了
        if c == 'q':
            moter.set_target_velocity(0, 0)
            break
 def __init__(self):
     self.__imgdet = ImageDetect()