Веб-камера Logitech с Beaglebone Black и opencv. Это работает несколько раз, то я получаю ошибки

У меня есть 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. Есть идеи, что здесь происходит?

1

Решение

Задача ещё не решена.

Другие решения