Opencv2.4.9+Qt5.6+MinGW

前导

MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。

VC运行库,是Visual C++的运行库。很多程序在编制的时候,使用了微软的运行库,大大减少了软件的编码量,却提高了兼容性。但运行的时候,需要这些运行库。这些运行库简称就是MSVC。

Windows下MSVC,Linux下GCC,而QT可以从Linux移植到Windows,所以采用GCC==>minGW
正因为QT采用的库和VS的不一样,所以从OPENCV下载下来的库文件并不能直接给QT使用,所以我们需要运用CMAKE产生配置文件,让minGW按照配置文件生成QT可用的库文件。

安装

参考博文:
https://blog.csdn.net/zhaocj/article/details/38944037 https://blog.csdn.net/u014291399/article/details/44992917
安装

Cmake build opencv2.4.9 时遇到的问题和解决方法

  1. 点击CMake(cmake-gui)图标,执行CMake,在Where is the source code和Where to build the binaries栏中分别为D:SoftwarePlace/opencv/soureces和D:SoftwarePlace/opencvbuild1。
    D:SoftwarePlace/opencvbuild1为编译后库文件所存放的目录(可以自定义),需要自己创建该目录(如果没有,则会有提示,选择Yes创建)。
    在这里插入图片描述
    然后点击configure按钮,打开新的窗口,
    在Specifythe generator for this project下选择MinGWMakefiles,
    然后选择Specify native compilers,
    点击Next按钮,打开新的窗口,
    在C一栏中填写D:/SoftwarePlace/QtPlace/Tools/mingw492_32/bin/gcc.exe,
    在C++一栏中填写D:/SoftwarePlace/QtPlace/Tools/mingw492_32/bin/g++.exe,Fortran不填写, 然后点击Finish按钮。

  2. Configure 后出现 CMAKE_MAKE_PROGRAM is not set。 在这里插入图片描述
    解决:先勾选Grouped和Advanced,
    在这里插入图片描述
    然后在下面的将CMAKE_MAKE_PROGRAM 项设置为 Qt的安装路径下,路径:Tools/mingw492_32/bin/mingw32-make.exe,重新点击Configure,
    在这里插入图片描述

  3. 出现
    在这里插入图片描述
    不能勾选WITH_IPP,勾选WITH_OPENGL和WITH_QT
    再次点击configure

  4. 出现
    在这里插入图片描述
    先不管(后面发现把mingw32-make添加到系统环境变量后,重新configure,这里的红色会消失)

  5. 出现
    在这里插入图片描述
    解决:添加mingw32-make到系统环境变量:右键我的电脑->属性->高级系统设置->高级->环境变量->编辑path,具体为 ;+路径。例如,我的路径为(搜索mingw32-make的路径)D:\SoftwarePlace\QtPlace\Tools\mingw492_32\bin
    所以path那里编辑 ;D:\SoftwarePlace\QtPlace\Tools\mingw492_32\bin
    然后确认即可(别忘记前面有分号)。
    在这里插入图片描述
    然后再到第4步那里重新configure,发现红色的部分没有了,然后重新generate.
    完美

  6. 同时按下windows键+R,在弹出的对话框中输入cmd,打开系统命令行终端,进入到前面build的目录下(我的为cd D:SoftwarePlace/opencvbuild1)执行mingw32-make命令,这会需要很长时间
    在这里插入图片描述

  7. 编译过程出现问题
    在这里插入图片描述
    网上解决方法:
    原文链接:http://answers.opencv.org/question/62580/not-able-to-build-opencv3-rc1-with-debug-build-type/
    在自己笔记本上编译未发现任何问题,但在公司电脑上,cmake过程中没有报错,编译却出现了videoIO模块怎么都编译不过去的现象,千辛万苦才找到解决方法:在opencv的源码文件(本人的路径D:\SoftwarePlace\Opencv\opencv\sources\modules\videoio\src)
    cap_dshow.cpp中添加下面一句:
    #define STRSAFE_NO_DEPRECATE

  8. 下面开始配置opencv的Qt开发环境。
    opencv源码编译好后,得再次添加系统的Path环境变量,内容为:

   D:\QtPlace\5.6\mingw49_32\bin;
   D:\SoftwarePlace\OpeCV4Qt\bin

其实我们需要的只是编译后D:SoftwarePlace/opencvbuild1目录下的bin
和lib文件夹,在D盘先建一个目录OpenCV4Qt,
将D:SoftwarePlace/opencvbuild1目录下的bin目录和lib和目录D:\SoftwarePlace\Opencv\opencv\build\include目录共3个目录复制到该目录下。今后我们在用Qt创建opencv工程的时候,都要在工程名称.Pro上添加以下目录和库。

//QT5.6 添加opencv库和目录
INCLUDEPATH += D:\SoftwarePlace\OpeCV4Qt\include\
                               D:\SoftwarePlace\OpenCV4Qt\include\opencv\
                               D:\SoftwarePlace\OpenCV4Qt\include\opencv2\
LIBS+=D:\SoftwarePlace\OpenCV4Qt\lib\libopencv_*.a

安装到此就结束了,库的添加自己可以按照库目录自己选择那些必须的,以后用到别的再选择添加。

测试

Qt控制台测试程序:
在这里插入图片描述
9. 在Qt中运行测试例程时出现下面的错误
在这里插入图片描述
别人的回答:
在这里插入图片描述
找了半天也没发现在哪里添加opencv_imgcodecs。实在解决不了了,感觉好坑啊。
最后发现就在上面的工程名称.Pro中加上下面的库路径在编译就可以了。

LIBS+=D:\SoftwarePlace\OpeCV4Qt\bin\libopencv_*.dll

所以感觉在前面出问题也是因为这;
最后的正确例程:工程名称.Pro内容如下:

INCLUDEPATH += D:\SoftwarePlace\OpeCV4Qt\include\
               D:\SoftwarePlace\OpenCV4Qt\include\opencv\
               D:\SoftwarePlace\OpenCV4Qt\include\opencv2\
LIBS+=D:\SoftwarePlace\OpenCV4Qt\lib\libopencv_*.a
LIBS+=D:\SoftwarePlace\OpeCV4Qt\bin\libopencv_*.dll

程序例程还是上面那个。
在这里插入图片描述
10. 关于Qt的动态库

环境变量配置好后,在Qt中用Ctrl+R可以成功运行程序,但是直接双击程序运行却会提示缺少libopencv_highgui249.dll,libopencv_core249.dll这是因为缺少Qt的动态库。
解决方法

  1. 手动添加
    发布软件时把动态库libopencv_highgui249.dll,libopencv_core249.dll手动添加到工程目录

  2. 打包动态库
    Qt 官方开发环境里自带了一个工具:windeployqt.exe。
    win+r 然后输入 cmd 打开命令提示行,切换到编译完的软件目录下,假设软件名叫 abc.exe,在命令行里输入 windeployqt abc.exe,就会把需要的动态库都复制到该软件目录下。

完结撒花。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值