У меня есть Beaglebone Black (дистрибутив Ангстрема) с подключенной к нему веб-камерой Logitech. До сих пор он работал нормально, но иногда это не так. У меня есть программа, которая делает несколько снимков (я сохраняю их в объекте Mat), а затем она проходит через некоторые процессы. Всякий раз, когда это работает хорошо, я получаю это:
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
It works... processing...
Как я уже говорил, несмотря на сообщение Invalid argument
, оно работает. Проблема в том, что после запуска моей программы несколько раз я получаю это:
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
libv4l2: error setting pixformat: Input/output error
HIGHGUI ERROR: libv4l unable to ioctl S_FMT
libv4l2: error setting pixformat: Input/output error
libv4l1: error setting pixformat: Input/output error
libv4l2: error setting pixformat: Input/output error
libv4l1: error setting pixformat: Input/output error
HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT
Error: webcam connection
Failed to capture an image
Так что я получаю немного меньше Invalid argument
сообщения и эти ошибки. Эти последние два сообщения приходят из моей функции:
void takePicture()
{
VideoCapture capture(0);
capture.set(CV_CAP_PROP_FRAME_WIDTH,1920);
capture.set(CV_CAP_PROP_FRAME_HEIGHT,1080);
// This is done because of some focus problems I've been having
for(int i=0; i < 20; i++)
{
capture >> image;
}
if (!capture.isOpened())
cout << "Error: webcam connection" << endl;
// This is done because of some focus problems I've been having
for(int i=0; i < 20; i++)
{
capture >> image;
}
if(image.empty())
cout << "Failed to capture an image" << endl;
// Save image
sprintf(filename2,"qr.jpg");
imwrite(filename2, image);
}
После этого, если я попытаюсь снова, я получу то же самое, пока не перезагрузлю Beaglebone. Есть идеи, что здесь происходит?
Задача ещё не решена.