8023.Moe 8023.Moe

在 Qt 中搭建 OpenCV 开发环境

in 编程 read (7) 774汉字 文章转载请注明来源!

  本人 Qt 已经使用了5年多, 这期间完全没有写过任何涉及图像处理相关领域的程序, 但前些天看到谷歌的一个去水印的算法, 一拍大腿, 打算装个 OpenCV 之后实现一下.

  我现在同时使用着 MSVC17 和 MinGW 编译环境, 在 MSVC 下, 只需要打开工程后勾选 WITH_QT 构建选项, 构建步骤选择 install 即可正常编译. 而 MinGW 环境则需要多做一部分工作, 网上的教程大多不能编译通过, 故在此记录搭建过程, 方便大家参考.


  下载

  下载 OpenCV 源码包(待会要自己用 MinGW 编译), 若使用 msvc2014 可直接下载 Win pack.

  根据自己系统的位数选择下载 CMake , 不推荐下载 Zip 包, 安装程序可以自动配置环境变量, 方便之后的操作.

  安装

  OpenCV 下载的是源代码包, 故不需要安装, 找个自己喜欢的地儿解压即可. 我解压到了 D:/Program/opencv-3.3.0/src/ 目录下.

  CMake 的安装也不用特别说明, 为以后配置方便, 建议在安装时选择加入 PATH.

  准备

  因众所周知的原因, 在天朝某些网络资源是无法访问的, 而构建编译过程中可能会从某些被屏蔽的服务器下载依赖和包. 为了避免出现奇奇怪怪的错误, 构建编译过程需稳定连接至"国际互联网".

  确保 MinGW 的路径已经添加至环境变量. 添加环境变量的方法不在赘述.

  打开源码包, 编辑 opencv-3.3.0srcmodulesvideoiosrccap_dshow.cpp , 找到 #include "DShow.h" (第111行左右), 在其上方添加一行 #define NO_DSHOW_STRSAFE . 保存退出.

  配置

  以管理员身份运行 CMake.

  选择之前所解压的 OpenCV 的源码包和构建完成所输出的文件路径.

  点击 Configure, 弹出对话框, 选择 MinGW MakefilesSpecify native compilers , 点击 Next 下一步.

  选择 gcc.exeg++.exe 的路径, 一般这两个文件位于 Qt 安装目录下的 Toolsmingw530_32bin 内. 点击 Finish 完成配置.

  弹出错误, 不用担心, 点 OK 即可.

  选中 Advanced 复选框, 搜索 CMAKE_MAKE_PROGRAM 双击 Value 改为 mingw32-make.exe 的路径, 和 gcc.exe & g++.exe 一样, 默认在 Qt 安装目录下的 Toolsmingw530_32bin 内.

  点击 Configure 看到 Configuring done 就应该是没问题了.

  搜索 WITH_QT 选中复选框.

  再搜索 ENABLE_PRECOMPILED_HEADERS 反选复选框.

  点击 Configure 后, 出现若干关于 Qt 的错误选项, 将 Value 修改为正确的路径(一般位于 Qt 安装目录下的 /5.9.1/mingw53_32/lib/cmake/ 内)

  再次点击 Configure , 出现 Configuring done 后无红色条目, 就可以点击 Generate 生成了. 出现 Generating done 表示生成成功, 可以关掉 CMake 了.

  编译

  打开生成文件的目录, 键入快捷键 Alt+D, 输入 cmd 回车, 输入 mingw32-make 回车, 进行编译.

  大概等待 30 分钟, 编译完成, 键入 mingw32-make 进行安装.

  很快安装完成.

  使用

  添加环境变量, 将编译好的库添加到环境变量. 路径一般是你编译构建目录下的 installx86mingwbin 目录.

  新建 Qt 工程, 在 Qt 的 .pro 工程文件最下面添加下面的内容. 注意要把我的路径改成你的:

INCLUDEPATH += D:\Program\opencv-3.3.0\bin\mingw\install\include

LIBS += D:\Program\opencv-3.3.0\bin\mingw\bin\libopencv_core330.dll
LIBS += D:\Program\opencv-3.3.0\bin\mingw\bin\libopencv_highgui330.dll
LIBS += D:\Program\opencv-3.3.0\bin\mingw\bin\libopencv_imgcodecs330.dll
LIBS += D:\Program\opencv-3.3.0\bin\mingw\bin\libopencv_imgproc330.dll
LIBS += D:\Program\opencv-3.3.0\bin\mingw\bin\libopencv_features2d330.dll
LIBS += D:\Program\opencv-3.3.0\bin\mingw\bin\libopencv_calib3d330.dll

  在主程序中调用头文件:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

  调用显示一张图片, 注意路径改成你自己的图片路径:

cv::Mat image = cv::imread("d://1.jpg", 1);
cv::namedWindow("My Image");
cv::imshow("My Image", image);

  编译运行, 成功!

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
文章链接:https://8023.moe/archives/setup-Qt-and-openCV-on-Windows.html (转载时请注明本文出处及文章链接)

OpenCVQtMinGW
最后由8023修改于2017-09-28 13:19
发表新评论
博客已萌萌哒运行
© 2018 由 Typecho 强力驱动.Theme by YoDu
前篇 后篇
雷姆
拉姆