from roboflowoak import RoboflowOak
import cv2
import time
import numpy as np
if __name__ == '__main__':
# RoboflowOak 모듈로 객체(rf)를 인스턴스화합니다
rf = RoboflowOak(model="YOUR-MODEL-ID", confidence=0.05, overlap=0.5,
version="YOUR-MODEL-VERSION-#", api_key="YOUR-PRIVATE_API_KEY", rgb=True,
depth=True, device=None, blocking=True)
# 모델을 실행하고 탐지가 포함된 비디오 출력을 표시합니다
while True:
t0 = time.time()
# rf.detect() 함수는 모델 추론을 실행합니다
result, frame, raw_frame, depth = rf.detect()
predictions = result["predictions"]
#{
# predictions:
# [ {
# x: (가운데),
# y:(가운데),
# width:
# height:
# depth: ###->
# confidence:
# class:
# mask: {
# ]
#}
#frame - 사전 처리 후 예측이 포함된 프레임
#raw_frame - OAK의 원본 프레임
#depth - raw_frame의 depth 맵, 중앙 카메라에 맞춰 중심 정렬됨
# timing: 벤치마킹용
t = time.time()-t0
print("FPS ", 1/t)
print("PREDICTIONS ", [p.json() for p in predictions])
# 깊이 계산을 위한 매개변수 설정
# Depth가 없는 OAK를 사용하는 경우 다음 2줄을 주석 처리하세요
max_depth = np.amax(depth)
cv2.imshow("depth", depth/max_depth)
# 연속 프레임으로 비디오 피드를 표시합니다
cv2.imshow("프레임", frame)
# OAK 추론 창을 닫는 방법 / 추론 중지: CTRL+q 또는 CTRL+c
if cv2.waitKey(1) == ord('q'):
break
# 창을 닫으려면(중단하거나 추론을 종료하려면) 키보드에서 CTRL+c를 입력하세요
python3 /path/to/[YOUR-PYTHON-FILE].py