我想创建一个简单的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:error:( - 206)无法识别或不支持函数cvGetMat
中的数组类型
当我在cpp中删除(;;)的循环时,网络摄像头将仅显示图像。不是来自网络摄像头的流媒体。
此代码适用于Windows,但它不适用于Linux或miniPC。我该如何修复我的代码?
我在ARM miniPC Cubieboard2中使用QtCreator 2.5.0 Qt4.8.2 OpenCV 2.3.1 Debian