Qt5.9.4与opencv3.4.3环境搭建与测试

13 篇文章 0 订阅

转自:https://blog.csdn.net/zbw1185/article/details/82469496
这里编译的是最新版OpenCV3.4.3,编译过程比较曲折,大部分编译错误都可以查得到解决方法,也遇到了Google无果的错误,好在最后还是解决了,特此记录。

编译环境
win10-64bit
Qt5.9.4
MinGW-5.3.0-32bit
CMake-3.12.1
OpenCV-3.4.3
相关软件下载地址
Qt下载地址:http://download.qt.io/archive/qt/5.9/
CMake下载地址:https://cmake.org/download/
OpenCV下载地址:https://opencv.org/releases.html#
在这里插入图片描述

此处下载安装包(Win pack)和源码(Sources)均可,配置时选择的目录不同。
在这里插入图片描述

其它地址
OpenCV官网:https://opencv.org/
OpenCV官方教程:https://docs.opencv.org/3.4/d9/df8/tutorial_root.html
速查表:https://docs.opencv.org/3.0-last-rst/opencv_cheatsheet.pdf

添加环境变量
H:\cmake\bin

D:\Qt\Qt5.9.4\5.9.4\mingw53_32\bin

D:\Qt\Qt5.9.4\Tools\mingw530_32\bin

OpenCV编译步骤
在opencv安装的同级目录下创建文件夹buildOpencv,用来存放构建文件及生成的库。
这里写图片描述

Qt官方编译步骤文档:https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows

编译前配置
1、打开 cmake-gui,设置源码和生成路径:

Where is the source code :H:\opencv3.4.3\opencv\sources (opencv安装目录)
Where to build the binaries:H:\opencv3.4.3\buildOpencv (新建的文件目录)
然后点击Configure,在弹框里选择编译器,点击Next,如下图:
这里写图片描述

如果下载的是opencv源码而非安装包,解压后里面没有sources目录,上图第一项设置Where is the source code :H:\opencv3\opencv-3.4.3即可。

2、在弹窗里设置编译器目录,然后点击Finish:

D:\Qt\Qt5.9.4\Tools\mingw530_32\bin\gcc.exe
D:\Qt\Qt5.9.4\Tools\mingw530_32\bin\g++.exe
这里写图片描述

3、点击Finish之后需要等待一段时间,等到进度条读完之后,开始配置:

勾选 WITH_QT
勾选 WITH_OPENGL(默认已勾选)
这里写图片描述

勾选之后点击Configure,等到进度条读完之后,再次配置:
Qt5Concurrent_DIR --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Concurrent
Qt5Core_DIR --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Core
Qt5Gui_DIR --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Gui
Qt5Test_DIR --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Test
Qt5Widgets_DIR --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5Widgets
Qt5OpenGL_DIR --> D:\Qt\Qt5.9.4\5.9.4\mingw53_32\lib\cmake\Qt5OpenGL
CMAKE_BUILD_TYPE --> Release(设置为Release后编译完成只会生成release库,需要debug库的话等到编译完成将此处更改为Debug,重新执行下面的步骤则会在生成的release库的目录下生成debug库)

点击右上角的Add Entry,然后在弹窗中输入:

QT_MAKE_EXECUTABLE
FILEPATH
D:\Qt\Qt5.9.4\5.9.4\mingw53_32\bin\qmake.exe
这里写图片描述

然后点击OK- Generate ,进度条读完之后,配置完成。

更多配置提示
上一步已经配置完成,但是编译过程中会遇到编译错误,如果希望一次编译成功,可以进行下面的设置。或者直接在上一步Generate之后就进行编译,等到编译出现错误时再来配置。

不勾选 WITH_IPP
不勾选与TESTS有关的选项
不勾选 ENABLE_PRECOMPILED_HEADERS
不勾选WITH_MSMF
勾选 ENABLE_CXX11
编辑H:\opencv3.4.3\opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在约110行左右#include "DShow.h"上面添加#define NO_DSHOW_STRSAFE,#define STRSAFE_NO_DEPRECATE,如下图:
这里写图片描述

编译命令

注意,如果编译过程中报错:
CMake Error at C:/Program Files/CMake/share/cmake-3.23/Modules/FindQt4.cmake:1314 (message):
Found unsuitable Qt version “” from NOTFOUND, this code requires Qt 4.x
Call Stack (most recent call first):
cmake/OpenCVFindLibsGUI.cmake:34 (find_package)
CMakeLists.txt:632 (include)
说明cmake要求查找Qt 4.x版本,而我安装的是Qt5.9.0所以需要在网上下载一个文件:http://svn.osgeo.org/ossim/trunk/ossim_package_support/cmake/CMakeModules/FindQt5.cmake
然后把这个文件内容复制替换到本地FindQt4.cmake文件中。
FindQt4.cmake文件地址C:\Program Files\CMake\share\cmake-3.23\Modules\FindQt4.cmake
再执行以下编译
在构建目录buildOpencv下按shift+右键,打开终端,然后执行编译命令:

mingw32-make 或 mingw32-make -j 8

注意:右侧带参数的命令是多线程编译,编译速度会快很多,但是使用多线程编译前最好先重启电脑或者关闭不必要的软件保证内存和CPU的占用较低状态,否则很有可能编译失败,编译失败的话也没关系可以改为单线程继续编译。

mingw32-make install

编译完成(100%)之后执行安装命令,会在相关目录下生成库文件。

编译错误
编译过程中可能会遇到下面的错误:

多线程编译错误,18%左右
这里写图片描述

解决:改为使用mingw32-make命令继续编译

C++11错误,25%左右
这里写图片描述

解决:打开 cmake-gui ,勾选 ENABLE_CXX11,然后重新Configure-Generate-mingw32-make

cap_dshow.cpp文件出错,43%左右
这里写图片描述

解决:
编辑H:\opencv3.4.3\opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在约110行左右#include "DShow.h"上面添加#define NO_DSHOW_STRSAFE,然后重新Configure-Generate-mingw32-make。编译debug版本出现该错误时在cap_dshow.cpp文件中添加#define STRSAFE_NO_DEPRECATE

cap_msmf.cpp文件出错,43%左右
这里写图片描述

解决:打开 cmake-gui ,不勾选WITH_MSMF,然后重新Configure-Generate-mingw32-make

生成的OpenCV库

编译完成后,生成的库在H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin目录下
这里写图片描述

Qt+OpenCV测试

添加OpenCV库到环境变量
添加 H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin到系统环境变量(Path)中

测试代码

在.pro文件中添加头文件路径和库路径:

复制代码
INCLUDEPATH += H:\opencv3.4.3\buildOpencv\install\include

LIBS += H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_core343.dll \
    H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_highgui343.dll \
    H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_imgcodecs343.dll \
    H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_imgproc343.dll \
    H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_features2d343.dll \
    H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv_calib3d343.dll

复制代码

复制代码
mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // read an image,Mat是基础图像容器
    cv::Mat image = cv::imread("H:/test_rec/qt.jpg", 1);
    // create image window named "My Image"
    cv::namedWindow("My Image");
    // show the image on window
    cv::imshow("My Image", image);
}

MainWindow::~MainWindow()
{
    delete ui;
}

复制代码
注意:如果构建项目时使用影子构建(即构建目录与项目目录非同一目录),则需要将.pro里引入的库拷贝到可执行文件所在目录,否则运行程序会异常结束(因为找不到库),如果没有使用影子构建则可以直接运行。
这里写图片描述

运行结果:
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值