我想创建简单的C程序来显示来自webcam的输出 . 这是我的专业文件:

QT       += core
QT       -= gui
TARGET = camera
CONFIG   += console
CONFIG   -= app_bundle
PKGCONFIG += opencv
TEMPLATE = app
SOURCES += main.cpp
LIBS += -lopencv_core -lopencv_imgproc -lopencv_highgui

这是我的cpp文件

#include <QCoreApplication>
#include <iostream>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>

using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

VideoCapture cap;
Mat cam;

namedWindow("camera",1);

for(;;)
{
    cap.open(0);
    cap>>cam;
    imshow("camera",cam);

    waitKey(10);
}

    return a.exec();
}

结果是:

VIDIOC_QUERYMENU:无效参数(8x)libv4l2:错误设置pixformat:设备或资源繁忙HIGHGUI错误:libv4l无法ioctl S_FMT libv4l2:错误设置pixformat:设备或资源繁忙libv4l1:错误设置pixformat:设备或资源繁忙HIGHGUI错误:libv4l无法ioctl VIDIOCSPICT OpenCV错误:cvGetMat中的错误标志(参数或结构字段)(无法识别或不支持的数组类型),文件/build/buildd-opencv_2.3.1-11-armhf-d9JIli/opencv-2.3.1/modules/core /src/array.cpp,第2482行终止在抛出'cv :: Exception'之后调用what():/ build / buildd-openncv_2.3.1-11-armhf-d9JIli / opencv-2.3.1 / modules / core /src/array.cpp:line 2482:错误:( - 206)函数cvGetMat中无法识别或不支持的数组类型

当我在我的cpp中删除(;;)的循环时,网络摄像头将仅显示图像 . 不是来自网络摄像头的流媒体 .

此代码适用于Windows,但它不适用于Linux或miniPC . 我该如何修复我的代码?

我在ARM miniPC Cubieboard2中使用QtCreator 2.5.0 Qt4.8.2 OpenCV 2.3.1 Debian