我有一个Beaglebone Black(Ångström发行版),并连接了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。知道这里发生了什么吗?