文章目录
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. 解决步骤
随它make好就成功啦,80%-85%可能会跳出成片白色的路径是没影响的。祝大家顺利配置好opencv!
3.3 源文件分享
Qt5.9.8配置好的opencv4.3.0源文件**
链接:/s/1fB2FgGI4yPk-ZqUjQbxcXA
提取码:bt3e
4. Qt配置
4.1 将bin文件加入环境变量
4.2 在.pro文件中加入下面的代码,路径以自己的为准
INCLUDEPATH += D:/042802/opencv/build/include/opencv2INCLUDEPATH += D:/042802/opencv/build/include/LIBS += D:/042802/opencv/opencv-build/bin/libopencv_calib3d430.dllLIBS += D:/042802/opencv/opencv-build/bin/libopencv_core430.dllLIBS += D:/042802/opencv/opencv-build/bin/libopencv_highgui430.dllLIBS += D:/042802/opencv/opencv-build/bin/libopencv_imgcodecs430.dllLIBS += D:/042802/opencv/opencv-build/bin/libopencv_imgproc430.dll
4.3 写个小程序,编译运行
如果显示程序异常结束,可能是因为环境变量还未生效,重启就可以了。
Widget.cpp
#include "widget.h"#include "ui_widget.h"#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>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;}
结果图示