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의 깊이 맵(중앙 카메라에 중심 보정됨)
# timing: 벤치마킹 목적
t = time.time()-t0
print("FPS ", 1/t)
print("PREDICTIONS ", [p.json() for p in predictions])
# 깊이 계산을 위한 매개변수 설정
# 깊이 기능이 없는 OAK를 사용하는 경우 다음 2줄을 주석 처리하세요
max_depth = np.amax(depth)
cv2.imshow("depth", depth/max_depth)
# 연속 프레임으로 비디오 피드를 표시합니다
cv2.imshow("frame", frame)
# OAK 추론 창을 닫거나 추론을 중지하는 방법: CTRL+q 또는 CTRL+c
if cv2.waitKey(1) == ord('q'):
break
# 창을 닫으려면(중단하거나 추론 종료) 키보드에서 CTRL+c를 누르세요
python3 /path/to/[YOUR-PYTHON-FILE].py