반응형

현재 Luxonis사의 OAK-D Pro W를 가지고 프로젝트를 진행하고 있는데, 파이썬 api를 사용하여 카메라를 구동하려고 하니 Fatal error. Please report to developers. Log: 'ImgPreproc' '582'dispatcherResponseServe:928  no request for this response: XLINK_WRITE_RESP 1 에러가 발생했다.

 

에러 내용

Fatal error. Please report to developers. Log: 'ImgPreproc' '582'
dispatcherResponseServe:928 no request for this response: XLINK_WRITE_RESP 1

 

 

이 문제를 찾아보려고 하니, 구글링에서도 나오지 않았고, 결국에는 하나씩 수정을 해가면서 문제점을 찾았다.

 

일단, 소스 코드는 Depthai에서 제공하는 샘플 코드로 설명을 하겠다.

import depthai as dai
import cv2

# 파이프라인 정의
pipeline = dai.Pipeline()

camRGb = dai.node.Camera
camRgb = pipeline.create(dai.node.Camera)

#Properties
camRgb.setBoardSocket(dai.CameraBoardSocket.CAM_A)
camRgb.setSize((1280, 800))

# Linking
videoOut = pipeline.create(dai.node.XLinkOut)
videoOut.setStreamName("video")
camRgb.video.link(videoOut.input)

with dai.Device(pipeline) as device:
    video = device.getOutputQueue(name="video", maxSize=1, blocking=False)

    while True:
        if video.has():
            cv2.imshow("video", video.get().getCvFrame())
        if cv2.waitKey(1) == ord('q'):
            break

 

 

위의 소스 코드는 camRgb 소켓을 열어 두고, videoOut과 연결하여 출력하는 방식이다.

이 소스를 그대로 돌리면 정상적으로 작동하는 것을 볼 수 있는데, 여기서 한 가지만 수정을 하면 문제가 발생하는 것을 확인할 수 있다.

 

camRgb.setBoardSocket(dai.CameraBoardSocket.CAM_A)

 

위의 코드에서 CameraBoardSockect에는 CAM_A부터 H까지 있다.

 

근데, 여기서 그냥 카메라의 경우에는 CAM_A만 소켓을 연결하여 사용할 수 있다. 해당 카메라의 공식 문서를 보면 아래와 같이 알려주고 있다.

 

RGB : Deprecated: Use CAM_A or address camera by name instead
LEFT : Deprecated: Use CAM_B or address camera by name instead
RIGHT : Deprecated: Use CAM_C or address camera by name instead
CENTER : Deprecated: Use CAM_A or address camera by name instead

 

OAK-D Pro W 카메라는 총 3개의 카메라가 있는데, 가운데는 RGB고, 양 옆은 Mono 카메라로 사용이 되어 depth 값을 가져온다. 위의 말처럼, RGB와 CENTER 카메라는 CAM_A만 사용할 수 있고, LEFT는 CAM_B, RIGHT는 CAM_C만 사용할 수 있다.

 

그래서, 위의 코드에서 CAM_A를 CAM_C로 변경을 하면 에러가 발생하므로, 해당 CAM을 변경하면 된다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기