finished oak and web cams and run files

main
Eliza Moscovskaya 1 month ago
parent 6b803b405e
commit a751f51078

@ -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}")

@ -1,5 +1,6 @@
import depthai as dai
import numpy as np
import cv2
from camera.base_camera import Camera
class OakCamera(Camera):

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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)

@ -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__':

Loading…
Cancel
Save