2016 mingw 5.3.0 + Qt 5.7.0 + opencv 3 under windows7

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010598445/article/details/52718358

参考

准备工作,注意统一版本,如mingw5.3.0,32位。

  • 安装mingw 5.3.0: 在 http://www.mingw.org/ 上最新的mingw 版本为4.9.2,这个官网感觉已经在2013年停止开发了。新的mingw官网在 https://mingw-w64.org/doku.php mingw支持32位和64位系统。不必特别安装mingw 5.3.0,因为可以通过Qt 附加安装mingw 5.3.0
  • 安装Qt5.7.0: 在 https://www.qt.io/download-open-source 中选择合适的版本,为了提供opencv的Qt toolbar支持(查看像素值,放大缩小图片,方便调试),Qt 的版本应该>5.3,否则即使在编译opencv 时选择 WITH_QT,也无法得到Qt toolbar.
  • 离线安装VS在线安装:在线安装可以提供更多的支持,如可以同时提供VS支持,并下载安装更多的版本,还能进行维护和更新。离线安装,可能就是下载速度快一点吧,下面选择的是离线安装。注意Qt的版本,选择通过MinGW5.3.0编译的Qt
    这里写图片描述
  • 在安装过程中,工具中附加mingw5.3.0
    这里写图片描述
  • 安装 opencv3 : 直接从github 上下载最新的版本,否则安装时opencvopencv_contrib 将可能不协调,导致安装失败。如果你不想使用opencv_contrib中的一些功能,如sift特征点之类,你可以不下载使用opencv_contrib
  • 安装 cmake:直接从 https://cmake.org/download/ 下载,注意保持统一的版本,即32位。但感觉用64位的cmake也没有关系,毕竟只是一个将CMakeList.txt 转换为Makefile 的小工具。

设备环境变量

  • mingw5.3.0: 设置bin到path中,下面的脚本其实我不会用,但可对照将PATH设置到环境变量中。打开cmd,测试gcc,g++,make等,如果不清楚执行程序名,在bin目录下进行对应:
@echo off

set MINGW_HOME=F:\YZBX\Qt\Qt5.7.0\Tools\mingw530_32

set C_INCLUDE_PATH=%MINGW_HOME%\include;

set CPLUS_INCLUDE_PATH=%MINGW_HOME%\lib\gcc\i686-w64-mingw32\5.3.0;%MINGW_HOME%\lib\gcc\i686-w64-mingw32\5.3.0\include;%MINGW_HOME%\include;

set LIBRARY_PATH=%MINGW_HOME%\lib;

set PATH=%MINGW_HOME%\bin;%MINGW_HOME%\i686-w64-mingw32\lib;%PATH%;

echo *** MinGW ENV SET OK ***

@echo on

mingw bin 目录下的可执行程序

bin 目录

mingw 测试

这里写图片描述

执行cmake-gui

修改CMakeLists.txt 使得cmake 能自动找到 Qt5,这样可以不用设置Qt5 环境变量,即加入

set(CMAKE_PREFIX_PATH "F:/YZBX/Qt/Qt5.7.0/5.7/mingw53_32")

这里写图片描述

选择自定义mingw,否则会出现找不到libint-8.dll的错误。

这里写图片描述

将mingw bin下的路径设置好

这里写图片描述

build 目录不应该与opencv 放在一块,否则可能出错。参见 https://github.com/opencv/opencv/issues/6098

  • 选择 with_qt, with_opengl, opencv_enable_nonfree
  • 设置 OPENCV_EXTRA_MODULES_PATH 为
I:/Win7/lib/opencv3/opencv_contrib/modules

Configure 到没有错误再Generate

这里写图片描述

在cmd中,进入build目录,执行make, make install

#在目录I:/Win7/lib/build下执行
mingw32-make -j4
mingw32-make install

这里写图片描述

测试

  • xxx.pro
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

INCLUDEPATH += F:/YZBX/opencv3/include
LIBS += -L"F:/YZBX/opencv3/x86/mingw/bin"
LIBS += -lopencv_core310 -lopencv_highgui310 -lopencv_imgproc310 -lopencv_imgcodecs310
  • main.cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    cout << "Hello World!" << endl;
    cv::Mat image= cv::imread("C:/Users/New User/Pictures/QtTool.PNG");
    cv::namedWindow("test");
    cv::imshow("test", image);
    cv::waitKey(0);

    return 0;
}

结果显示,选择中的区域即Qt toolbar

这里写图片描述

其它工作

  • 设置 Qt5 环境变量,opencv3 环境变量。方便随时随地运行程序。
  • 如果出现错误,注意以下细节
    • 路径用\与用/的区别
    • 是否选择了BUILD_opencv_world模块?由于mingw并不是完全的linux环境,因此部分模块mingw暂时不支持。比如说world模块
    • 32位与64位的区别
    • 版本是否一致?
    • 系统路径中是否存在程序或库的顺序问题?(即多个同名程序或库,导致出现覆盖的问题)

猜你喜欢

转载自blog.csdn.net/u010598445/article/details/52718358