Windows下Qt+minGW+CMake+opencv配置--方法总结、文件分享与排错分享

文章目录

  • 1. 配置环境与概述
  • 2.参考方法
  • 3. minGW32-make遇到的错误
    • 3.1. 解决策略
    • 3.2. 解决步骤
    • 3.3 源文件分享
  • 4. Qt配置
    • 4.1 将bin文件加入环境变量
    • 4.2 在.pro文件中加入下面的代码,路径以自己的为准
    • 4.3 写个小程序,编译运行

1. 配置环境与概述

Windows10;
Qt 5.9.8;
minGW(Qt内的) 5.3.0;
CMake 3.7.0;
Opencv 4.3.0
版本很重要,不同的版本出错的类型,数量都会不同,大概是版本越老越容易出错。我试了不下5个版本,最终用最新版本才减少了出错。只剩这么一个错误,在外网找了半天,一个小角落里找到了答案。鉴于其他的常见错误很好找,我就不写上来啦!
另一种可能的方法是,直接下载别人配置好了的opencv包。可见各个版本编译下载好的Opencv包。我的用Qt5.9.8配置的Opencv4.3.0文件也会以百度云盘形式放在3.3节,如果网盘失效或者存在其他问题,可滴我q3148842452。

2.参考方法

  • 方法1:白嫖配置好的文档+配置Qt,有个人发博客说可以,我试了一下在各个版本编译下载好的Opencv包下载的3.3.1,成功运行了,省时间的建议直接这种。
  • 方法2:用Qt编译
    用Qt Creator编译opencv并配置开发环境
  • 方法3:用CMake编译
    opencv+Qt+cmake安装配置

3. minGW32-make遇到的错误

[ 37%] Linking CXX shared library …\bin\libopencv_core341.dll
CMakeFiles\opencv_core.dir/objects.a: member CMakeFiles\opencv_core.dir/objects.
a(vs_version.rc.obj) in archive is not an object
collect2.exe: error: ld returned 1 exit status
modules\core\CMakeFiles\opencv_core.dir\build.make:2329: recipe for target ‘bin/
libopencv_core341.dll’ failed
mingw32-make[2]: *** [bin/libopencv_core341.dll] Error 1
CMakeFiles\Makefile2:1675: recipe for target ‘modules/core/CMakeFiles/opencv_cor
e.dir/all’ failed
mingw32-make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
Makefile:161: recipe for target ‘all’ failed
mingw32-make: *** [all] Error 2

3.1. 解决策略

在cmake gui中添加条目OPENCV_VS_VERSIONINFO_SKIP = 1,再重新Configure,Generate。

3.2. 解决步骤

Windows下Qt+minGW+CMake+opencv配置--方法总结、文件分享与排错分享_第1张图片

Windows下Qt+minGW+CMake+opencv配置--方法总结、文件分享与排错分享_第2张图片
随它make好就成功啦,80%-85%可能会跳出成片白色的路径是没影响的。祝大家顺利配置好opencv!
Windows下Qt+minGW+CMake+opencv配置--方法总结、文件分享与排错分享_第3张图片

3.3 源文件分享

Qt5.9.8配置好的opencv4.3.0源文件**
链接:https://pan.baidu.com/s/1fB2FgGI4yPk-ZqUjQbxcXA
提取码:bt3e

4. Qt配置

4.1 将bin文件加入环境变量

Windows下Qt+minGW+CMake+opencv配置--方法总结、文件分享与排错分享_第4张图片

4.2 在.pro文件中加入下面的代码,路径以自己的为准

INCLUDEPATH += D:/042802/opencv/build/include/opencv2
INCLUDEPATH += D:/042802/opencv/build/include/

LIBS += D:/042802/opencv/opencv-build/bin/libopencv_calib3d430.dll
LIBS += D:/042802/opencv/opencv-build/bin/libopencv_core430.dll
LIBS += D:/042802/opencv/opencv-build/bin/libopencv_highgui430.dll
LIBS += D:/042802/opencv/opencv-build/bin/libopencv_imgcodecs430.dll
LIBS += D:/042802/opencv/opencv-build/bin/libopencv_imgproc430.dll

4.3 写个小程序,编译运行

如果显示程序异常结束,可能是因为环境变量还未生效,重启就可以了。
Widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include 
#include 
using namespace cv;

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    cv::Mat image=cv::imread("D:/peizhi/xy.jpg",1);
    namedWindow("jmmmm");
    imshow("jmmm",image);
}

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

结果图示

你可能感兴趣的:(opencv)