C++ 带有Beaglebone Black和opencv的罗技网络摄像头。它工作了几次,然后我就出错了

C++ 带有Beaglebone Black和opencv的罗技网络摄像头。它工作了几次,然后我就出错了,c++,image,opencv,beagleboneblack,C++,Image,Opencv,Beagleboneblack,我有一个Beaglebone Black(Ångström发行版),连接了一个Logitech网络摄像头。到目前为止,它一直运作良好,但有时却不行。我有一个程序,可以拍几张照片(我把它保存在一个Mat对象中),然后再进行一些处理。只要它工作正常,我就会得到: VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMEN

我有一个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
因此,我得到了一些
无效参数
消息和那些错误。最后两条消息来自我的函数:

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);
}
void takePicture()
{
视频捕获(0);
捕获。设置(CV\u CAP\u PROP\u FRAME\u WIDTH,1920);
捕获设置(CV、CAP、PROP、框架、高度,1080);
//这是因为我一直有一些焦点问题
对于(int i=0;i<20;i++)
{
捕捉>>图像;
}
如果(!capture.isOpened())

难道不是所有的网络摄像头都受linux驱动程序支持,所以你应该检查你的网络摄像头是否受支持。@fonZ mine不在该列表中,但正如我所说,它确实可以拍照。这是否意味着即使它工作正常也不受支持?这是否与我收到的错误有关?谢谢!这意味着你的网络摄像头不受linux驱动程序支持他需要一个好的驱动程序,一个支持网络摄像头的驱动程序。