最近准备学习Qt与Opencv,在开始学习前,配置出了不少问题,好不容易才弄好,现在先将大概内容记下来
安装:
Qt5.14+CMake3.22+OPencv4.1
因为我之前都有安装过,所以安装步骤不再赘述,基本上根据提示就能顺利安装完毕。
需要注意的是Qt安装的时候选择的是Mingw64安装,且选择所有需要的组件(在配置过程中因为安装的不顺利重装过一次,应该有组件没安装完全的关系,所有后面把组件都装了,也不算很占空间)
其他两个按照版本安装应该就没问题了大概 可能需要注意版本对应的关系(我最开始安装的OpenCV应该是4.5以上,是以前安装的很新的版本,然后早cmake的时候红色里面有一个和别的教程说的不一样的Qt6_DIR,后面编译在15%左右就一直出问题解决不了,最后换成了4.1的版本就没出这个问题了,但是不确定是不是这个原因)
配置:
配置的过程其实不算很复杂,有相关经验的话一般都能理解。
1 设置环境变量
首先需要确认设置了Qt、CMake环境变量:
这里确认有红色框里面的三个环节变量应该就行了,如果说有弹出环境变量太大的问题,可以创建拓展一个新的环境变量加上%代替原路径,如%Qt%。
2 CMake构建
接下来就是打开CMake的GUI进行构建的步骤了。
下载安装的OpenCV一般有如图所示的除了红框内的这些内容,新建一个文件夹作为输出构建目录
在CMake中分别选择源目录和输出构建目录,如图,勾选Advanced
选择configure,进行设置MinGW Makefiles->specify native comilers,选择Next
选择编译器gcc.exe 对于C、g++对于C++,路径参照下图,一般在Tools->mingw730_64->bin中
点击Finish需要等待一段时间结束后,会出现很多红色提示,这里主要下拉勾选WITH_OPENGL和WITH_QT
因为我在最后安装的时候弹出了报错和python有关,参考别人的文章可能是因为安装了Anaconda以后自动检测到python路径并且为其自动build了python的opencv链接导致的,所以可以取消掉Python有关的选项(也可以不管它,等后面报错的时候重新构建就好了,我看很多人也有没出现问题的)
添加实体OPENCV_VS_VERSIONINFO_SKIP=1,如图(这里我是在大概30%到40%左右时提示报错的,看网上的介绍加上这个就可以了)
再次点击Configure,仍然会出现提示,检查对应的目录,如果有问题就修改,如果没有问题就继续configure一直到红色消失再点击Generate
3 编译
到这里先进入之前新建的输出构建目录(我这里命名为withQt),按shift键,右键鼠标选择在此处打开Powershell窗口(s),在弹出的窗口出输入
mingw32-make -j 8
加入-j 8可以让cpu进行多任务处理加快速度,但是不用也可以,也可以用
mingw32-make
进度达到100%以后,输入
mingw32-make install
完成之后,退出,将 withQt\install\x64\mingw\bin 路径加入环境变量
4 测试
打开Qt Creator,新建一个项目进行测试,注意选择MinGW版本的。
为了能在Qt中使用,需要将opencv的库加入Qt的include的路径中,看网络上的介绍有几种方法:
(1)在.pro中加入
INCLUDEPATH += D:\OpenCV\opencv\withQt\install\include
LIBS += D:\OpenCV\opencv\withQt\lib\libopencv_*.a
(2)或者同样在.pro中加入
INCLUDEPATH += D:\OpenCV\opencv\withQt\install\include
CONFIG(debug, debug|release): {
LIBS += D:\OpenCV\opencv\withQt\lib\libopencv_*.a
} else:CONFIG(release, debug|release): {
LIBS += D:\OpenCV\opencv\withQt\lib\libopencv_*.a
}
测试配置的结果,在main.cpp文件修改为:
#include "mainwindow.h"#include"opencv2/opencv.hpp"#include <QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);using namespace cv;Mat image=imread("../learn_opencv/data/1.jpg");imshow("output",image);// MainWindow w;// w.show();return a.exec();}
主要问题:
1.在15%时报错
解决方法:根据对比网上的内容,发现自己的构建时多了一个Qt6_DIR,在尝试各种方法以后,考虑可能是版本的原因,将OpenCV由最新版换成4.1解决了问题
2.在35%提示
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: *** [modules\core\CMakeFiles\opencv_core.dir\build.make:1800: bin/libopencv_core451.dll] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:1794: modules/core/CMakeFiles/opencv_core.dir/all] Error 2
mingw32-make: *** [Makefile:165: all] Error 2
解决方法:添加在CMake的GUI中添加OPENCV_VS_VERSIONINFO_SKIP = 1,重新构建编译
3.安装98%时,提示:
mingw32-make[2]: *** [modules\python2\CMakeFiles\opencv_python2.dir\build.make:76: modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:3365: modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
mingw32-make: *** [Makefile:165: all] Error 2
解决方法:网上给的建议是CMake构建时直接关掉所有和python有关的内容,但是后面看其实只要关掉有关python2有关的选项应该也行。
参考:
Qt+OpenCV配置教程(图解亲测)_流楚丶格念的博客-CSDN博客_qt+opencv
用Cmake 编译OpenCV常见的错误_一枚小菜程序员的博客-CSDN博客_cmake编译opencv出错