今天项目须要用到OpenCV的部分功能,因此开始接触一下OpenCV,本人也是个初学者,因此有一操做现阶段也没法给出明确的解释,固然这里也借鉴了一些别人的经验。若是有什么错误,恳请指正。html
这里是针对mingw版本的Qt。git
本文中所出现的文件地址只是做为参照,具体配置过程当中,根据本身的配置状况填写。github
在安装过程当中遇到的一些问题。ide
一、首先安装Qt,CMake,解压OpenCV测试
二、配置环境变量Pathui
将Qt安装目录下的“E:\Qt\Qt5.11.1\5.11.1\mingw53_32\bin”以及“E:\Qt\Qt5.11.1\Tools\mingw530_32\bin”添加到环境变量中。this
将CMake的“E:\Program Files\CMake\bin”添加到环境变量中。spa
设置完环境变量后重启。.net
三、对OpenCV进行CMake3d
①在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界面操做阶段结束。
四、打开CMD,进入前面填写的目标文件位置(“E:/OpenCV/mytest”)。输入mingw32-make开始编译,(也可以mingw32-make -j 4 经过设置编译的核数加快进程,只不过在打印错误信息的时候显示有问题,第一次仍是用mingw32-make,明确错误信息)
五、编译完成后,输入mingw32-make install开始安装。
六、配置OpenCV环境变量
将OpenCV加入环境变量中。
七、测试
新建一个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
遇到的问题:
一、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的文件夹中,并根据对应的下载失败的内容进行重命名。
参考:
http://www.javashuo.com/article/p-kcmodewj-kn.html
https://blog.csdn.net/yiyuehuan/article/details/52951574
二、显示的错误信息为nullptr未定义之类的。
在在 cmake-gui 编译配置中:勾选 ENABLE_CXX11
而后从新“Configure”->"Generate">>"mingw32-make"。
参考:https://blog.csdn.net/qq_40560275/article/details/83118088
三、未声明“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"。
四、“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