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

win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第1张图片

二、配置CMake

1.设置好路径,点击左下角的【Configure】
在这里插入图片描述
2.
win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第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

win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第3张图片
选择好后,点【Finish】
win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第4张图片
4.等待配置

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

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

8.上步生成完毕后,关闭对话框即可
win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第6张图片

三、编译OpenCV

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

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

win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第7张图片
2.编译时间比较长,且容易出现各种问题。

3.当编译完成后,如下图示。然后在当前目标下输入 “mingw32-make install ”,按回车进行安装。这样可用于Qt的opencv库文件就生成了。
win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第8张图片

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

四、OpenCV编译过程出错

1.显卡不是英伟达的,所以要不勾选WITH_CUDA
2.
win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第9张图片
解决方法:
由于我的电脑装了Anaconda,所以在cmake进行configure之后会自动检测到python路径并且为其自动build了python的opencv链接,所以取消选中一切关于python的选项。
修改前:
win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第10张图片
修改后:
win10+Qt5.7.0+OpenCV3.4.1+CMake3.7.2环境搭建_第11张图片
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 
#include 
#include 
#include 
#include 

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);

}

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

你可能感兴趣的:(Qt)