upd submodules

master
Eliza Moscovskaya 4 weeks ago
parent fa76967f0b
commit 5649f00549

@ -4,6 +4,12 @@ class Config:
CAMERA_TYPE = 'oak' # 'web' или 'oak' CAMERA_TYPE = 'oak' # 'web' или 'oak'
MIRROR_CAMERA = True MIRROR_CAMERA = True
# ===== Скелет =====
POSE_DETECTOR = 'mediapipe' # 'oak' или 'mediapipe'
OAK_MODEL_TYPE = 'efficienthrnet2'
OAK_DETECTION_THRESHOLD = 0.1
OAK_SHAVES = 6
# ===== Преобразование позы в скорости ===== # ===== Преобразование позы в скорости =====
ARM_CONTROL = { ARM_CONTROL = {
'linear_arm': 'right', 'linear_arm': 'right',

@ -6,6 +6,7 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'submodules', 'gestur
import cv2 import cv2
from config import Config from config import Config
from skeleton.mediapipe_detector import MediaPipeDetector from skeleton.mediapipe_detector import MediaPipeDetector
from skeleton.oak_pose_detector import OakPoseDetector
from gesture_control.special_gestures import SpecialGestureDetector from gesture_control.special_gestures import SpecialGestureDetector
from ml_gestures_dynamic.predict import DynamicGesturePredictor from ml_gestures_dynamic.predict import DynamicGesturePredictor
@ -20,7 +21,20 @@ def main():
cfg = Config() cfg = Config()
# Детектор скелета # Детектор скелета
detector = MediaPipeDetector() if cfg.POSE_DETECTOR == 'oak':
if cfg.CAMERA_TYPE == 'web':
print(f"При вычислении скелета на oak, можно пользоваться только этой же камерой для захвата видео!")
return
detector = OakPoseDetector(
model_type=cfg.OAK_MODEL_TYPE,
detection_threshold=cfg.OAK_DETECTION_THRESHOLD,
shaves=cfg.OAK_SHAVES
)
camera = None
else:
detector = MediaPipeDetector()
# Захват кадра с камеры
camera = create_camera(camera_type=cfg.CAMERA_TYPE, camera_id=cfg.CAMERA_ID, mirror=cfg.MIRROR_CAMERA)
# Детектор статичных жестов # Детектор статичных жестов
special_detector = SpecialGestureDetector( special_detector = SpecialGestureDetector(
@ -47,9 +61,6 @@ def main():
robot = DummySimRobot(cfg) robot = DummySimRobot(cfg)
else: else:
robot = DebugRobot() robot = DebugRobot()
# Захват кадра с камеры
camera = create_camera(camera_type=cfg.CAMERA_TYPE, camera_id=cfg.CAMERA_ID, mirror=cfg.MIRROR_CAMERA)
enabled = False enabled = False
# включение управления жестами # включение управления жестами
@ -60,13 +71,22 @@ def main():
dome_processed = False dome_processed = False
while True: while True:
frame = camera.get_frame() # Получение кадра и скелета в зависимости от типа скелетного детектора
if frame is None: if cfg.POSE_DETECTOR == 'oak':
continue frame, landmarks = detector.get_frame_and_pose()
if frame is None:
result = detector.detect(frame) continue
if result['success']: else:
landmarks = result['landmarks'] frame = camera.get_frame()
if frame is None:
continue
result = detector.detect(frame)
if result['success']:
landmarks = result['landmarks']
else:
landmarks = None
if landmarks is not None:
# Статический жест # Статический жест
special = special_detector.predict(landmarks) special = special_detector.predict(landmarks)
@ -111,7 +131,11 @@ def main():
''' '''
# Отрисовка # Отрисовка
vis = detector.draw_landmarks(frame, result['pose_landmarks']) if cfg.POSE_DETECTOR == 'oak':
vis = detector.draw_landmarks(frame, landmarks) if landmarks is not None else frame
else:
vis = detector.draw_landmarks(frame, result['pose_landmarks']) if landmarks is not None else frame
cv2.putText(vis, f"Move: {'ON' if enabled else 'OFF'}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0) if enabled else (0,0,255), 2) cv2.putText(vis, f"Move: {'ON' if enabled else 'OFF'}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0) if enabled else (0,0,255), 2)
cv2.putText(vis, f"L:{linear:.2f} A:{angular:.2f}", (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,0), 2) cv2.putText(vis, f"L:{linear:.2f} A:{angular:.2f}", (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,0), 2)
if special != 'none': if special != 'none':
@ -131,8 +155,13 @@ def main():
if cv2.waitKey(1) & 0xFF == ord('q'): if cv2.waitKey(1) & 0xFF == ord('q'):
break break
if cfg.POSE_DETECTOR == 'oak':
detector.release()
else:
camera.release()
detector.pose.close()
camera.release()
cv2.destroyAllWindows() cv2.destroyAllWindows()
robot.quit() robot.quit()

@ -1 +1 @@
Subproject commit a751f510788aa8cc30a30687eb2270244ec55279 Subproject commit e2e24a5e7eb09e43cdb163985ec50e4d6ad32863

@ -1 +1 @@
Subproject commit 9f65622b633900e07ee1f9dbe9e33a5add3167ae Subproject commit b34711ebc690cf9199b15bc3074e08f258303003
Loading…
Cancel
Save