여기에 약간 이상한 문제가 있습니다. 간단히 말하면, 저는 카메라 (Mercury 2.0 웹캠 임베디드 카메라)에서 프레임을 잡으려고하는데 예상대로 진행되지 않습니다.잡아 당길 때 OpenCV 3.2가 선택 타임 아웃을 제공하지만 fswebcam이 작동합니다.
BeagleBone Black에서 데비안 제시를 실행 중입니다. OpenCV 3.2를 설치하고 테스트 한 결과, 내 Vision 알고리즘이 imread()로 잘 작동하므로 카메라를 사용할 시간입니다. 내가 처음 만난 문제는 카메라가 우분투 16.04에서 작동하지 않는다는 것입니다. 그래서 저는 데비안 Jessie로 바꿨고 fswebcam (fswebcam -r 1600x1200 -jpeg 95 -D 0 test.jpg)을 사용하여 1600x1200 프레임을 초 단위로 잡을 수있었습니다.
효과가 있으면 매우 만족해서 VideoCapture >> Mat가 예상대로 작동하지 않아서 이제 다시 짜증이났습니다. 여기 키커가 있는데, 해상도를 800x600으로 설정하면 정상적으로 작동합니다. 해상도를 1600x1200으로 설정하면 우선 시간 초과 선택이 표시되지만 그 다음에 즉시 결과가 나옵니다. 프레임을 잡을 수는 있지만 첫 번째 시도에서는 그렇지 않습니다. 날 타이밍 문제라고 생각해. 그래서 grab() 및 retrieve()를 사용하여 시도했지만 도움이되지 않습니다.
다른 사람에게 좋은 아이디어/제안/조언이나 경험이 있습니까?
일부 사양 : 또한
$ uname -a
Linux arm 4.9.13-bone4 #1 [date] armv7l GNU/Linux
$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2
$ v4l2-ctl --all
Driver Info (not using libv4l2):
Driver name: uvcvideo
Card type: Mercury USB2.0 Camera
Bus info: usb-musb-hdrc.1.auto-1.1
Driver version: 4.9.13
$ fswebcam -r 1600x1200 --jpeg 95 -D 0 test.jpg
Opening /dev/video0
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Capturing frame...
Captured frame in 0.00 seconds.
Processing captured image...
Setting output format to JPEG, quality 95
Writing JPEG image to 'test.jpg'.
Basic 코드 기능
VideoCapture cam(0);
cam.set(CAP_PROP_FRAME_WIDTH,width);
cam.set(CAP_PROP_FRAME_HEIGHT,height);
/*check cam.isOpened()*/
/*echo some camera properties*/
if(cam.grab()) cam.retrieve(frame);
imwrite(filename, frame);
cam.release();
, 나는 시도 :
modprobe uvcvideo nodrop=1 timeout=6000
그러나 나는 또한 사용하여 시도 ... 도움이되지 않았다 예전의 CvCapture 클래스이지만 도움이되지 않았습니다.
하루 종일 작업 중이며 몇 가지 추가 사항을 생각했습니다. BeagleBone은 USB 장치를 연결하거나 분리하는 데 어려움을 겪고있는 것 같습니다. 내가 찍은 사진을 확인하고 싶었 기 때문에 USB 플래시 드라이브를 연결하고, 마운트하고, 마운트 해제하고, 꺼내고, 사진을 감상했습니다. 그러면 fswebcam을 사용해도 카메라가 더 이상 작동하지 않습니다. 다시 작동 시키려면 다시 부팅해야했습니다.
또한 fswebcam을 사용하여 몇 가지 2MP 사진을 빠르게 연속으로 촬영하면 문제가있는 것처럼 보입니다. 때로는 다시 부팅해야하기 전에 몇 번이나 사진을 찍을 수 있습니다. 2MP 사진을 찍을 수 없으면 800x600 사진을 찍을 수 있습니다. 단순히 USB를 다시 연결해도 도움이되지 않습니다.