之所以使用Qt作为开发IDE,是因为它简洁,以及方便等特性。之前是用vs开发的,但受够了他的繁琐。
我使用的Qt是vs版5.8,以及vs2013,参考了博文:https://blog.csdn.net/YaokunLu/article/details/52531961和https://www.cnblogs.com/AijunHe/p/6658741.html?utm_source=itdadao&utm_medium=referral的文章,
进行相关配置之后,在vs中能够开发,但不太喜欢vs这个IDE,想在Qt中开发。
在做好Qt的编译器之后,需要写Qt项目的pro文件,参考了好多都不太对,本着宁滥勿缺的原则,我把所有的库都写上了,然后还需要注意,需要执行构建里的qmake一下,下面是我的pro文件里添加的内容,可以根据你的opencv具体目录及版本做相应的更改
INCLUDEPATH += D:\program\opencv\opencv\build\include\opencv2 \
D:\program\opencv\opencv\build\include\opencv \
D:\program\opencv\opencv\build\include
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_ml2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_calib3d2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_contrib2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_core2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_features2d2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_flann2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_gpu2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_highgui2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_imgproc2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_legacy2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_objdetect2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_ts2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_video2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_nonfree2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_ocl2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_photo2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_stitching2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_superres2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_videostab2410d.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_ml2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_calib3d2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_contrib2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_core2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_features2d2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_flann2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_gpu2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_highgui2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_imgproc2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_legacy2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_objdetect2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_ts2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_video2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_nonfree2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_ocl2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_photo2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_stitching2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_superres2410.lib
LIBS+=D:\program\opencv\opencv\build\x64\vc12\lib\opencv_videostab2410.lib
写的有点多,但是没事,一次写好,之后就是复制粘贴了。再就是需要在头文件加入包含文件,
#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
基本就可以运行了,另外,如果你的程序中有中文,可能还有些问题,我的程序中原来有中文的注释,删掉之后可以正常运行。下面是一个调取摄像头的程序,亲测无错。
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
qDebug()<<"hello world!";
VideoCapture cap(0);
cout << "Original size:" << cap.get(CV_CAP_PROP_FRAME_WIDTH) << " " << cap.get(CV_CAP_PROP_FRAME_HEIGHT) << endl;
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
cap.set(CV_CAP_PROP_FPS, 16);
cout << "Modified size:" << cap.get(CV_CAP_PROP_FRAME_WIDTH) << " " << cap.get(CV_CAP_PROP_FRAME_HEIGHT) << endl;
cvNamedWindow("camera show", CV_WINDOW_AUTOSIZE);
Mat frame;
while (true)
{
cap >> frame;
imshow("camera show", frame);
if (waitKey(10) == 27) //press key “ESC” to quit from loop
break;
}
}
Widget::~Widget()
{
delete ui;
}
程序运行截图,按esc推出摄像头采集。
后期解决中文的问题,再更新。