今天项目需要用到OpenCV的部分功能,所以开始接触一下OpenCV,本人也是个初学者,所以有一操作现阶段也无法给出明确的解释,当然这里也借鉴了一些别人的经验。如果有什么错误,恳请指正。

 

这里是针对mingw版本的Qt。

本文中所出现的文件地址只是作为参照,具体配置过程中,根据自己的配置情况填写。

 

在安装过程中遇到的一些问题。

1、首先安装Qt,CMake,解压OpenCV

2、配置环境变量Path

opencv库不支持qt qt配置opencv出错_OpenCV

将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

opencv库不支持qt qt配置opencv出错_CMake_02

①在1处“Where is the source code:”选择OpenCV解压的源文件位置。

在2处“Where to build the binaries:”选择自定义的空文件用于保存生成的对象。

②点击左下角的“Configure”。出现如下界面。

opencv库不支持qt qt配置opencv出错_CMake_03

选择“MinGW Makefiles”。(如果在之前未添加Qt的环境变量,选择“MinGW Makefiles”,在之后的配置会出错)

选择“Specify native compilers”, 然后“Next”。弹出编译器配置界面。

opencv库不支持qt qt配置opencv出错_CMake_04

 将Qt安装目录下的

E:/Qt/Qt5.11.1/Tools/mingw530_32/bin/gcc.exe

E:/Qt/Qt5.11.1/Tools/mingw530_32/bin/g++.exe

分别填入对应的文件路径。

③点击“Finish”。

opencv库不支持qt qt配置opencv出错_OpenCV_05

开始进行配置。

 

opencv库不支持qt qt配置opencv出错_OpenCV_06

 配置完成。

④勾选“WITH_QT”,“WITH——OPENGL”,“ENABLE_CXX11”。点击“Configure”。

opencv库不支持qt qt配置opencv出错_OpenCV_07

 ⑤检查配置完成后,红色区域的位置信息是否正确。点击“Configure”。

opencv库不支持qt qt配置opencv出错_CMake_08

 显示“Configuring done”,配置完成。

 ⑥点击“Generate”。

opencv库不支持qt qt配置opencv出错_OpenCV_09

 此时CMake界面操作阶段结束。

4、打开CMD,进入前面填写的目标文件位置(“E:/OpenCV/mytest”)。输入mingw32-make开始编译,(也可以mingw32-make -j 4 通过设置编译的核数加快进程,只不过在打印错误信息的时候显示有问题,第一次还是用mingw32-make,明确错误信息)

5、编译完成后,输入mingw32-make install开始安装。

6、配置OpenCV环境变量

将OpenCV加入环境变量中。

opencv库不支持qt qt配置opencv出错_Qt_10

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);

运行结果

opencv库不支持qt qt配置opencv出错_OpenCV_11

 

安装过程参考:

https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows


 

遇到的问题:

1、CMake opencv时Download: opencv_ffmpeg.dll、ippicv等失败的解决方法

配置阶段出现问题,可以查看目标文件夹中的CMakeDownloadLog.txt文件。

①进行安装的时候,无法从Github下载,我通过修改Hosts文件,使CMake正常下载,修改Hosts文件的方法自行百度。

②根据CMakeDownloadLog.txt中的提示信息,和查看ffmpeg的.cmake文档。

CMake后会发现opencv-source根目录下会出现一个.cache的文件夹,里面有需要下载的内容,如果下载失败所有的内容都是0KB。如下图

opencv库不支持qt qt配置opencv出错_Qt_12

在源文件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的文件夹中,并根据对应的下载失败的内容进行重命名。

opencv库不支持qt qt配置opencv出错_Qt_13

参考:



2、显示的错误信息为nullptr未定义之类的。

在在 cmake-gui 编译配置中:勾选 ENABLE_CXX11

然后重新“Configure”->"Generate">>"mingw32-make"。

参考:

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://visp-doc.inria.fr/doxygen/visp-daily/tutorial-install-win10-mingw64.html

https://blog.huihut.com/2017/12/03/CompiledOpenCVRunInQt/