2012-11-07 9 views
1

JPEG 형식 또는 YUV422 또는 BGR24로 프레임을 잡을 수있는 V4L2 카메라가 있습니다. OpenCV로 카메라를 BGR24 @ 640x480으로 설정하고 싶습니다. 이를 위해, 나는 다음과 같은 설정했다 :OpenCv로 BGR24 형식을 설정하는 방법은 무엇입니까?

capture = cvCreateCameraCapture(0); 
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640); 
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480); 
cvSetCaptureProperty(capture, CV_CAP_PROP_FOURCC, CV_FOURCC('B', 'G', 'R', '3')); 

을하지만 OpenCV의 다음과 같은 오류 메시지가 저를 다시 제공 : 그래서, OpenCV의 대신 BGR24의 640 × 480 형식 @ JPEG 설정

HIGHGUI ERROR: V4L: Property <unknown property string>(6) not supported by device 

합니다. 어떻게 해결할 수 있습니까?

참고 : BGR24 형식은 다음 gstreamer를 파이프 라인을 테스트하고 제대로 작동합니다

gst-launch-0.10 v4l2src num-buffers=10 device=/dev/video0 ! 'video/x-raw-rgb,width=640,height=480,bpp=24,depth=24,red_mask=255,green_mask=65280,blue_mask=16711680,endianness=4321' ! filesink location=/tmp/output10.rgb24 

종류가

답변

0

나는 당신이 경우 올바른 카메라

에 액세스하고 있는지 확인 거라고 관하여 cvCreateCameraCapture(N)에서 N을 여러 개 변경해도됩니다.

그 외 웹캠 자체가 UVC 사양을 준수하는지 확인합니다. V4L이 캠의 매개 변수를 조회하는 데 문제가있을 수 있습니다.

카메라가 특정 형식의 캡처를 지원하기 때문에 Usb 비디오 클래스를 엄격하게 준수하지 않으면 OpenCV는 해당 형식으로 캡처 할 수 있음을 감지하지 못할 수도 있습니다 내 지식의, 강제 수 없습니다.

+0

감사합니다. @Totero, 다른 모든 카메라가 연결되어 있지 않아/dev/video0을 사용해야합니다. V4L2 카메라는 UVC를 기반으로하지 않습니다 (USB 카메라가 아니며 마이크로 컨트롤러 카메라 인터페이스를 기반으로합니다). CV_CAP_PROP_FOURCC가 V4L2 ioctls가 아닌 표준 UVC 설정을 호출하고 있습니까? – aldo85ita

+0

USB 장치의 경우 V4L2가 UVC (http://www.kernel.org/doc/Documentation/video4linux/uvcvideo.txt)를 호출합니다. – Totero

+0

하지만 카메라가 USB가 아닌 것을 보는 것 - 저의 가정이 좋지 않습니다 ... 그렇다면 V4L과 사용자 정의 드라이버 사이에 확실한 문제가 있다고 말할 수 있습니다. 귀하의 openCV 코드가 맞습니다. 아마 당신은 문제를 드라이버 문제 (여기서는 dsp 스택)로 재 게시해야 할 것입니다. 아마도 누군가이 문제를 이미 접했을 것입니다. – Totero