finished oak and web cams and run files
This commit is contained in:
@@ -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
|
||||||
|
|||||||
+11
-3
@@ -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
|
||||||
|
|
||||||
|
|||||||
+18
-14
@@ -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)
|
||||||
|
|||||||
+16
-2
@@ -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__':
|
||||||
|
|||||||
Reference in New Issue
Block a user