1 软件下载
- CMake V3.9.0
- OpenCV V3.2.0
- Qt V5.8.0
- 注意:请严格按照这几个版本,我之前下载了其他的版本编译总是出错,虽然不确定是否一定是版本问题,但是减少错误因素吧!软件链接来源于此博客
- http://ex2tron.top/2017/07/26/CMake%E7%BC%96%E8%AF%91OpenCV3-2%EF%BC%88Qt%E5%B9%B3%E5%8F%B0%EF%BC%89/
2 添加系统环境变量
将编译器的路径添加到系统的环境变量Path中,没有就新建。
D:\Qt\Qt5.8.0\Tools\mingw530_32\bin; D:\Qt\Qt5.8.0\5.8\mingw53_32\bin
注意:这里最好直接复制路径过来,减小错误发生!(自己Qt的安装目录)
注意:CMake安装时勾选添加CMake到系统Path中(又不用手动去添加了)
3 打开CMake-gui ,进行OpenCV编译
前面步骤不容易出错,网上很多教程都有,关键到了第一次configure之后就容易出错,所以这里说下
总共两次configure,一次generate是最后。
勾选WITH_QT 点击 configure;
出现几个红色,Qt开头的确认value的路径没问题,再一次点击configure;
没有红色了,点击generate
注意:我没有勾选OPENGL,如果你要用的话自行勾选,可能会出现跟OPENGL相关的红色项!比如你没有类似的lib文件等等。
后面就编译成功了。
4 编译好之后,添加环境变量,重启
编译好之后,把下面三个文件夹提取出来放在一个新目录下,比如:D:\QtOpenCV
- OpenCV安装目录下的build\include文件夹
- CMake生成后的lib文件夹
- CMake生成后的bin文件夹
之后将上图bin的路径(D:\QtOpenCV\bin)添加到系统环境变量,重启电脑
5 测试配置是否成功
Qt新建一个工程,先在.pro文件里添加依赖项
INCLUDEPATH += D:\QtOpenCV\include
D:\QtOpenCV\include\opencv
D:\QtOpenCV\include\opencv2
LIBS += D:\QtOpenCV\lib\libopencv_*.a
注意:同样最好用自己文件下的路径复制过来
然后在main.cpp文件里添加
#include "mainwindow.h"
#include <QApplication>
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[])
{
//声明IplImage指针
IplImage*pImg;
//载入图片
pImg=cvLoadImage("C:/Users/Administrator/Desktop/lena.jpg",1);
//创建窗口
cvNamedWindow("Image",1);
//显示图像
cvShowImage("Image",pImg);
//等待按键
cvWaitKey(0);
//销毁窗口
cvDestroyWindow("Image");
//释放图像
cvReleaseImage(&pImg);
return 0;
}
注意:代码中 添加自己的图片路径
然后我运行出错了:
Could not create directory "D:\QTdemo\Error in " Util.asciify("build-demo-1-Desktop_Qt_5_6_2_MinGW_32bit-Debug")": TypeError: Property 'asciify' of object Core::Internal::UtilsJsExtension(0x287e8a8) is not a function"
Error while building/deploying project demo-1 (kit: Desktop Qt 5.6.2 MinGW 32bit)
When executing step "qmake"
网上找了资料,我确定是路径没对,就是左边项目那里,构建目录的路径没对
解决办法就是:自己在工程文件夹上新建一个文件夹,名字就是这个目录的名字,然后再添加到构建目录里
这只是一个例子的路径,每个项目应该都是要建立的。分析了出错的原因:就是因为自己之前装了其他版本的Qt然后卸载,这个新的就不能自己build了,我就是参考原来的,发现原版本的就是会自动建一个文件夹,总之是解决了!
然后运行会提示有两个警告说:argc 和 argv 两个变量没有使用,如果不想要警告,可以在.pro文件里添加一行:
QMAKE_CXXFLAGS += -Wno-unused-parameter
就没有警告了。
最后就是lena出来了