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': if camera_type == 'web':
return WebCamera(**kwargs) return WebCamera(**kwargs)
elif camera_type == 'oak': elif camera_type == 'oak':
kwargs.pop('camera_id', None)
return OakCamera(**kwargs) return OakCamera(**kwargs)
else: else:
raise ValueError(f"Unknown camera type: {camera_type}") raise ValueError(f"Unknown camera type: {camera_type}")

@ -1,5 +1,6 @@
import depthai as dai import depthai as dai
import numpy as np import numpy as np
import cv2
from camera.base_camera import Camera from camera.base_camera import Camera
class OakCamera(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 pandas as pd
import numpy as np import numpy as np
import joblib 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 pandas as pd
import numpy as np import numpy as np
import joblib 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 numpy as np
import joblib import joblib
import json 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 numpy as np
import joblib import joblib
import json 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 cv2
import os import os
import csv import csv
import sys
from pathlib import Path
import argparse import argparse
#sys.path.append(str(Path(__file__).parent.parent))
from skeleton.mediapipe_detector import MediaPipeDetector from skeleton.mediapipe_detector import MediaPipeDetector
from ml_gestures.feature_extractor import normalize_landmarks 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 cv2
import os import os
import sys
import time import time
from pathlib import Path from camera.factory import create_camera
from camera import create_camera
def capture_photo(output_dir='captured', camera): def capture_photo(camera, output_dir='captured'):
""" """
Простой инструмент для захвата фото с камеры. инструмент для захвата фото с камеры.
При нажатии 's' запускается отсчёт 3 секунды, затем делается снимок. при нажатии 's' запускается отсчёт 3 секунды, затем делается снимок.
При нажатии 'q' выход. при нажатии 'q' выход.
""" """
# Создаём папку, если её нет # Создаём папку, если её нет
Path(output_dir).mkdir(parents=True, exist_ok=True) 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("Нажмите 's' для захвата фото (отсчёт 3 секунды)")
print("Нажмите 'q' для выхода") print("Нажмите 'q' для выхода")
@ -77,4 +81,4 @@ if __name__ == '__main__':
args = parser.parse_args() args = parser.parse_args()
camera = create_camera(camera_type=args.camera_type, camera_id=args.camera, mirror=not args.no_mirror) 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 cv2
import numpy as np import numpy as np
import csv import csv
@ -10,7 +21,7 @@ import pandas as pd
#sys.path.append(str(Path(__file__).parent.parent)) #sys.path.append(str(Path(__file__).parent.parent))
from skeleton.mediapipe_detector import MediaPipeDetector from skeleton.mediapipe_detector import MediaPipeDetector
from ml_gestures_dynamic.feature_extractor import extract_sequence from ml_gestures_dynamic.feature_extractor import extract_sequence
from camera import create_camera from camera.factory import create_camera
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
@ -33,10 +44,12 @@ def main():
writer.writerow(header) writer.writerow(header)
detector = MediaPipeDetector() detector = MediaPipeDetector()
'''
cap = cv2.VideoCapture(args.camera) cap = cv2.VideoCapture(args.camera)
if not cap.isOpened(): if not cap.isOpened():
print("Камера не найдена") print("Камера не найдена")
sys.exit(1) sys.exit(1)
'''
# Определяем следующий ID последовательности # Определяем следующий ID последовательности
try: try:
@ -127,7 +140,8 @@ def main():
start_time = time.time() start_time = time.time()
sequence = [] sequence = []
cap.release() #cap.release()
camera.release()
cv2.destroyAllWindows() cv2.destroyAllWindows()
if __name__ == '__main__': if __name__ == '__main__':

Loading…
Cancel
Save