Qt5.11.1配置OpenCV3.4.6流程以及遇到的问题
作者:互联网
今天项目需要用到OpenCV的部分功能,所以开始接触一下OpenCV,本人也是个初学者,所以有一操作现阶段也无法给出明确的解释,当然这里也借鉴了一些别人的经验。如果有什么错误,恳请指正。
这里是针对mingw版本的Qt。
本文中所出现的文件地址只是作为参照,具体配置过程中,根据自己的配置情况填写。
在安装过程中遇到的一些问题。
1、首先安装Qt,CMake,解压OpenCV
2、配置环境变量Path
将Qt安装目录下的“E:\Qt\Qt5.11.1\5.11.1\mingw53_32\bin”以及“E:\Qt\Qt5.11.1\Tools\mingw530_32\bin”添加到环境变量中。
将CMake的“E:\Program Files\CMake\bin”添加到环境变量中。
设置完环境变量后重启。
3、对OpenCV进行CMake
①在1处“Where is the source code:”选择OpenCV解压的源文件位置。
在2处“Where to build the binaries:”选择自定义的空文件用于保存生成的对象。
②点击左下角的“Configure”。出现如下界面。
选择“MinGW Makefiles”。(如果在之前未添加Qt的环境变量,选择“MinGW Makefiles”,在之后的配置会出错)
选择“Specify native compilers”, 然后“Next”。弹出编译器配置界面。
将Qt安装目录下的
E:/Qt/Qt5.11.1/Tools/mingw530_32/bin/gcc.exe
E:/Qt/Qt5.11.1/Tools/mingw530_32/bin/g++.exe
分别填入对应的文件路径。
③点击“Finish”。
开始进行配置。
配置完成。
④勾选“WITH_QT”,“WITH——OPENGL”,“ENABLE_CXX11”。点击“Configure”。
⑤检查配置完成后,红色区域的位置信息是否正确。点击“Configure”。
显示“Configuring done”,配置完成。
⑥点击“Generate”。
此时CMake界面操作阶段结束。
4、打开CMD,进入前面填写的目标文件位置(“E:/OpenCV/mytest”)。输入mingw32-make开始编译,(也可以mingw32-make -j 4 通过设置编译的核数加快进程,只不过在打印错误信息的时候显示有问题,第一次还是用mingw32-make,明确错误信息)
5、编译完成后,输入mingw32-make install开始安装。
6、配置OpenCV环境变量
将OpenCV加入环境变量中。
7、测试
新建一个Qt Widgets Application工程,在.pro文件最后添加以下代码
INCLUDEPATH += E:\OpenCV\mybuild\install\include LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_core346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_highgui346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_imgcodecs346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_imgproc346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_features2d346.dll LIBS += E:\OpenCV\mybuild\install\x86\mingw\bin\libopencv_calib3d346.dll
然后在MainWindow.cpp中加入如下代码
// read an image cv::Mat image = cv::imread("d://1.jpg", 1); // create image window named "My Image" cv::namedWindow("My Image"); // show the image on window cv::imshow("My Image", image);
运行结果
安装过程参考:
https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows
https://blog.csdn.net/zong596568821xp/article/details/78627755
遇到的问题:
1、CMake opencv时Download: opencv_ffmpeg.dll、ippicv等失败的解决方法
配置阶段出现问题,可以查看目标文件夹中的CMakeDownloadLog.txt文件。
①进行安装的时候,无法从Github下载,我通过修改Hosts文件,使CMake正常下载,修改Hosts文件的方法自行百度。
②根据CMakeDownloadLog.txt中的提示信息,和查看ffmpeg的.cmake文档。
CMake后会发现opencv-source根目录下会出现一个.cache的文件夹,里面有需要下载的内容,如果下载失败所有的内容都是0KB。如下图
在源文件E:\OpenCV\opencv-3.4.6\opencv-3.4.6\3rdparty\ffmpeg中的ffmpeg.cmake中记载有ffmpeg的版本。然后从https://github.com/opencv/opencv_3rdparty/branches/all下载,放到opencv-source根目录下的.cache的文件夹中,并根据对应的下载失败的内容进行重命名。
参考:
https://blog.csdn.net/KayChanGEEK/article/details/79919417
https://blog.csdn.net/yiyuehuan/article/details/52951574
2、显示的错误信息为nullptr未定义之类的。
在在 cmake-gui 编译配置中:勾选 ENABLE_CXX11
然后重新“Configure”->"Generate">>"mingw32-make"。
参考:https://blog.csdn.net/qq_40560275/article/details/83118088
3、未声明“sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA”
在OpenCV源码的文件\modules\videoio\src\cap_dshow.cpp文件中,在”#include ”DShow.h““前面加一行”#define NO_DSHOW_STRSAFE“。
#define NO_DSHOW_STRSAFE #include "DShow.h"
然后重新“Configure”->"Generate">>"mingw32-make"。
4、“D3D11_TEXTURE2D_DESC“was not declared in this scope
我这里是直接在配置里面不勾选”WITH_OPENCL_D3D11-NV“。
然后重新“Configure”->"Generate">>"mingw32-make"。
参考:https://blog.csdn.net/huihut/article/details/81317102
还有一些我没遇到的问题,这里记录几个问题处理的参考。
https://visp-doc.inria.fr/doxygen/visp-daily/tutorial-install-win10-mingw64.html
https://blog.huihut.com/2017/12/03/CompiledOpenCVRunInQt/
标签:bin,Qt,Qt5.11,opencv,流程,OpenCV,install,https,OpenCV3.4 来源: https://www.cnblogs.com/muyueshi/p/11771716.html