diff --git a/camera/factory.py b/camera/factory.py index 9710c51..695a52c 100644 --- a/camera/factory.py +++ b/camera/factory.py @@ -5,6 +5,7 @@ def create_camera(camera_type='web', **kwargs): if camera_type == 'web': return WebCamera(**kwargs) elif camera_type == 'oak': + kwargs.pop('camera_id', None) return OakCamera(**kwargs) else: raise ValueError(f"Unknown camera type: {camera_type}") diff --git a/camera/oak_camera.py b/camera/oak_camera.py index 0293f86..1b0ce42 100644 --- a/camera/oak_camera.py +++ b/camera/oak_camera.py @@ -1,5 +1,6 @@ import depthai as dai import numpy as np +import cv2 from camera.base_camera import Camera class OakCamera(Camera): diff --git a/ml_gestures/evaluate.py b/ml_gestures/evaluate.py index 312c1d4..d4d1f82 100644 --- a/ml_gestures/evaluate.py +++ b/ml_gestures/evaluate.py @@ -1,3 +1,14 @@ +# === Вот эта связка нужна для всех исполняемых скриптов внутри библиотеки, которая будет использоваться как сабмодуль === + +import sys +from pathlib import Path + +ROOT = Path(__file__).parent.parent +if str(ROOT) not in sys.path: + sys.path.insert(0, str(ROOT)) + +# === перед вмеми импортами === + import pandas as pd import numpy as np import joblib diff --git a/ml_gestures/train.py b/ml_gestures/train.py index fce4f87..607bed8 100644 --- a/ml_gestures/train.py +++ b/ml_gestures/train.py @@ -1,3 +1,14 @@ +# === Вот эта связка нужна для всех исполняемых скриптов внутри библиотеки, которая будет использоваться как сабмодуль === + +import sys +from pathlib import Path + +ROOT = Path(__file__).parent.parent +if str(ROOT) not in sys.path: + sys.path.insert(0, str(ROOT)) + +# === перед вмеми импортами === + import pandas as pd import numpy as np import joblib diff --git a/ml_gestures_dynamic/evaluate.py b/ml_gestures_dynamic/evaluate.py index 8b81268..92bae57 100644 --- a/ml_gestures_dynamic/evaluate.py +++ b/ml_gestures_dynamic/evaluate.py @@ -1,3 +1,14 @@ +# === Вот эта связка нужна для всех исполняемых скриптов внутри библиотеки, которая будет использоваться как сабмодуль === + +import sys +from pathlib import Path + +ROOT = Path(__file__).parent.parent +if str(ROOT) not in sys.path: + sys.path.insert(0, str(ROOT)) + +# === перед вмеми импортами === + import numpy as np import joblib import json diff --git a/ml_gestures_dynamic/train.py b/ml_gestures_dynamic/train.py index a4202f7..348355b 100644 --- a/ml_gestures_dynamic/train.py +++ b/ml_gestures_dynamic/train.py @@ -1,3 +1,14 @@ +# === Вот эта связка нужна для всех исполняемых скриптов внутри библиотеки, которая будет использоваться как сабмодуль === + +import sys +from pathlib import Path + +ROOT = Path(__file__).parent.parent +if str(ROOT) not in sys.path: + sys.path.insert(0, str(ROOT)) + +# === перед вмеми импортами === + import numpy as np import joblib import json diff --git a/utils/annotate.py b/utils/annotate.py index b09a771..73b0084 100644 --- a/utils/annotate.py +++ b/utils/annotate.py @@ -1,11 +1,19 @@ +# === Вот эта связка нужна для всех исполняемых скриптов внутри библиотеки, которая будет использоваться как сабмодуль === + +import sys +from pathlib import Path + +ROOT = Path(__file__).parent.parent +if str(ROOT) not in sys.path: + sys.path.insert(0, str(ROOT)) + +# === перед вмеми импортами === + import cv2 import os import csv -import sys -from pathlib import Path import argparse -#sys.path.append(str(Path(__file__).parent.parent)) from skeleton.mediapipe_detector import MediaPipeDetector from ml_gestures.feature_extractor import normalize_landmarks diff --git a/utils/capture_photo.py b/utils/capture_photo.py index 7fb21ff..18c9cc2 100644 --- a/utils/capture_photo.py +++ b/utils/capture_photo.py @@ -1,24 +1,28 @@ +# === Вот эта связка нужна для всех исполняемых скриптов внутри библиотеки, которая будет использоваться как сабмодуль === + +import sys +from pathlib import Path + +ROOT = Path(__file__).parent.parent +if str(ROOT) not in sys.path: + sys.path.insert(0, str(ROOT)) + +# === перед вмеми импортами === + import cv2 import os -import sys import time -from pathlib import Path -from camera import create_camera +from camera.factory import create_camera -def capture_photo(output_dir='captured', camera): +def capture_photo(camera, output_dir='captured'): """ - Простой инструмент для захвата фото с камеры. - При нажатии 's' запускается отсчёт 3 секунды, затем делается снимок. - При нажатии 'q' выход. + инструмент для захвата фото с камеры. + при нажатии 's' запускается отсчёт 3 секунды, затем делается снимок. + при нажатии 'q' выход. """ # Создаём папку, если её нет Path(output_dir).mkdir(parents=True, exist_ok=True) - - cap = cv2.VideoCapture(camera_id) - if not cap.isOpened(): - print("Не удалось открыть камеру") - sys.exit(1) - + print("Нажмите 's' для захвата фото (отсчёт 3 секунды)") print("Нажмите 'q' для выхода") @@ -77,4 +81,4 @@ if __name__ == '__main__': args = parser.parse_args() camera = create_camera(camera_type=args.camera_type, camera_id=args.camera, mirror=not args.no_mirror) - capture_photo(output_dir=args.dir, camera) + capture_photo(camera, output_dir=args.dir) diff --git a/utils/record_dynamic.py b/utils/record_dynamic.py index 6a5d23b..2f9848a 100644 --- a/utils/record_dynamic.py +++ b/utils/record_dynamic.py @@ -1,3 +1,14 @@ +# === Вот эта связка нужна для всех исполняемых скриптов внутри библиотеки, которая будет использоваться как сабмодуль === + +import sys +from pathlib import Path + +ROOT = Path(__file__).parent.parent +if str(ROOT) not in sys.path: + sys.path.insert(0, str(ROOT)) + +# === перед вмеми импортами === + import cv2 import numpy as np import csv @@ -10,7 +21,7 @@ import pandas as pd #sys.path.append(str(Path(__file__).parent.parent)) from skeleton.mediapipe_detector import MediaPipeDetector from ml_gestures_dynamic.feature_extractor import extract_sequence -from camera import create_camera +from camera.factory import create_camera def main(): parser = argparse.ArgumentParser() @@ -33,10 +44,12 @@ def main(): writer.writerow(header) detector = MediaPipeDetector() + ''' cap = cv2.VideoCapture(args.camera) if not cap.isOpened(): print("Камера не найдена") sys.exit(1) + ''' # Определяем следующий ID последовательности try: @@ -127,7 +140,8 @@ def main(): start_time = time.time() sequence = [] - cap.release() + #cap.release() + camera.release() cv2.destroyAllWindows() if __name__ == '__main__':