win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建

软件型号:
Qt5.7.0
OpenCV3.4.1
CMake3.7.2

一、设置环境变量

1.装好CMake、Qt和OpenCV。

2.此电脑(右键)->属性->高级系统设置->高级->环境变量->系统变量(path)->编辑->新增

D:\Qt\Qt5.7.0\5.7\mingw53_32\bin
D:\Qt\Qt5.7.0\5.7\mingw53_32\lib
D:\Qt\Qt5.7.0\Tools\mingw530_32\bin
D:\Qt\CMake\bin
D:\Qt\opencv-3.4.1\opencv\build\x64\vc14\bin

在这里插入图片描述

二、配置CMake

1.设置好路径,点击左下角的【Configure】
在这里插入图片描述
2.
在这里插入图片描述

3.配置C和C++编译器路径

D:/QT/Qt5.7.0/Tools/mingw530_32/bin/gcc.exe
D:/QT/Qt5.7.0/Tools/mingw530_32/bin/g++.exe

在这里插入图片描述
选择好后,点【Finish】
在这里插入图片描述
4.等待配置

5.勾选中“WITH_OPENGL”、“WITH_QT”,然后再次点【Configure】
在这里插入图片描述
6.第一次编译后会出现红色,我电脑上安装了Qt5.7.0和Qt5.7.1,但是只有Qt5.7.0才有mingw,所以修改路径红色区域的路径。
修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
然后不勾选ENABLE_PRECOMPILED_HEADERS
在这里插入图片描述
我电脑不是英伟达显卡,所以不勾选WITH_CUDA
在这里插入图片描述
勾选ENABLE_CXX11 ,防止后续出问题
在这里插入图片描述

7.上步运行完毕后,点【Generate】

8.上步生成完毕后,关闭对话框即可
在这里插入图片描述

三、编译OpenCV

1、快捷键:win+R ,输入cmd

输入路径后,输入“mingw32-make”命令,按回车进行编译。

在这里插入图片描述
2.编译时间比较长,且容易出现各种问题。

3.当编译完成后,如下图示。然后在当前目标下输入 “mingw32-make install ”,按回车进行安装。这样可用于Qt的opencv库文件就生成了。
在这里插入图片描述

4.完成后关闭窗口,即可。

四、OpenCV编译过程出错

1.显卡不是英伟达的,所以要不勾选WITH_CUDA
2.
在这里插入图片描述
解决方法:
由于我的电脑装了Anaconda,所以在cmake进行configure之后会自动检测到python路径并且为其自动build了python的opencv链接,所以取消选中一切关于python的选项。
修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
3.报错的路径和原因,

大概意思就是在路径D:\Qt\opencv-3.4.1\opencv\sources\modules\videoio\src的cap_dshow.cpp出错了
错误代码提示:error: ‘else’ without a previous ‘if’;error:‘sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA’ was not declared inthis scope
原因:cap_dshow.cpp缺少宏定义

解决方法:打开cap_dshow.cpp文件,在前面加上#define STRSAFE_NO_DEPRECATE

五、Qt配置

1.把编译后,目标目录下的bin目录路径 添加到Path环境变量中。

D:\Qt\opencvBuild\bin
D:\Qt\opencvBuild\install\x86\mingw\bin

加入变量后,最好重启/注销电脑,否则Qt编程容易崩溃crash,亲测有效
2.新建工程,然后在.pro文件中添加

INCLUDEPATH += D:\Qt\opencv-3.4.1\opencv\build\include\opencv2 \
               D:\Qt\opencv-3.4.1\opencv\build\include\opencv  \
               D:\Qt\opencv-3.4.1\opencv\build\include
LIBS += D:\Qt\opencvBuild\lib\libopencv_*.a

即可

3.部分代码

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>

using namespace cv;
using namespace std;`
void MainWindow::on_openBtn_clicked()
{
    //打开原始灰度图
    fileName = QFileDialog::getOpenFileName(this,"Open Image",".","Image File(*.png *.jpg *.jpeg *.bmp)");
    //grayImg = imread(fileName.toLatin1().data(),IMREAD_GRAYSCALE);
    img = imread(fileName.toLatin1().data());
    if(img.empty())
        return;

    //在QLabel中显示图像
    QPixmap *pixmap = new QPixmap(fileName);
    pixmap->scaled(ui->oriImgLabel->size(), Qt::KeepAspectRatio);
    ui->oriImgLabel->setScaledContents(true);
    ui->oriImgLabel->setPixmap(*pixmap);

}

感想:在两个电脑上搭建过环境,之前那个搭建了一下午,遇到的是基础问题,这次断断续续搭建了两天,遇到了各种奇葩问题,查阅了好多资料,不过总算成功了,以此纪念,哎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒惰仓鼠君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值