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)
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()
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
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
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()
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
def __init__(self): self.__imgdet = ImageDetect() self.__camera = cv2.VideoCapture(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()