在 QT Creator 上配置 opencv 环境的一些认识和注意点

在 QT Creator 上配置 opencv 环境的一些认识和注意点

一、OpenCV4 + QT Creator + Cmake

我参考的视频是:https://www.bilibili.com/video/BV163411b7mg/?spm_id_from=333.880.my_history.page.click&vd_source=b91967c499b23106586d7aa35af46413

我使用的 Qt Creator 版本是 Qt Creator 6.0.1 (Community),Qt版本是opencv为 4.5.1 版本 。
在这里插入图片描述
按照上述链接中的步骤做,

1、环境变量
在这里插入图片描述
(需要注意要与CMake中对应),即:
在这里插入图片描述
1、设置环境变量之后要重启电脑。

2、视频中勾选WITH_QT和WITH_OPENGL,但一编译到 target opencv_dnn 就不行了,原因是不能勾选WITH_OPENGL。网上有些教程让两个都选,现在已不行了,编译不过。

CMake版本:
在这里插入图片描述
还有个问题(在Generate之前设置就行):
在这里插入图片描述
之后,基本就好了。
(注:要编译成32位的不知道行不行,因为遇到过一次编译成32位时,到100%时因为Python原因失败的。)

二、OpenCV4 + QT Creator + VS编译器,C++开发配置

参考视频链接:https://www.bilibili.com/video/BV1Za4y1v7ra?p=2&spm_id_from=333.880.my_history.page.click&vd_source=b91967c499b23106586d7aa35af46413

这里把步骤列在下面:

1、下载 opencv,这里推荐 4.5.1 版本(本例中使用的是 4.5.5 版本)

下载时要下载 .exe 文件,不要下载 .zip 文件。

在这里插入图片描述

官网下载速度过慢,推荐下载网址链接如下:
https://www.raoyunsoft.com/wordpress/index.php/2020/03/09/opencvdownload/

如何查看现有的 OpenCV 版本呢?

在这里插入图片描述
在这里插入图片描述

2、配置系统环境变量

在这里插入图片描述

3、创建 QT 项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意这里选择 MSVC 的,我这里选择 MSV2019 64 bit,
在这里插入图片描述
之后,一路 next,建立好工程。这里选择 Release,

在这里插入图片描述
然后,链接 OpenCV 库。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后,点击完成。然后打开 .pro 文件,会多了下面两句话,
在这里插入图片描述

第二段并没有指明具体的位置,要完善(从 build 后添加,以下面为例)。

INCLUDEPATH += D:/openCV/opencv/build/include/
DEPENDPATH += D:/openCV/opencv/build/include/opencv2/

最后,测试下工程是否能正常运行。

#include "mainwindow.h"
#include "QVBoxLayout"
#include "QLabel"
#include "QString"
#include "opencv2/opencv.hpp"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QVBoxLayout* layout = new QVBoxLayout();
    QLabel* label = new QLabel();
    std::string str = (cv::format("Hello, QT and OpenCV%d.%d", cv::getVersionMajor(), cv::getVersionMinor()));

    label->setText(QString(str.c_str()));
    layout->addWidget(label);
    ui->centralwidget->setLayout(layout);
    cv::Mat src = cv::imread("H:\\wordData\\hand\\chou.png");

    cv::namedWindow("输入图片",cv::WINDOW_FREERATIO);
    cv::imshow("输入图片", src);
    cv::waitKey(0);
    cv::destroyAllWindows();
}

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

运行效果如下,

在这里插入图片描述

在这里插入图片描述

三、如何打开用到 OpenCV 库的工程文件

在得到涉及到 OpenCV 的 QT 工程时,如果您的电脑中已经使用 CMAKE 重新编译过 OpenCV 的源码并添加 QT Creator 中后,就可以直接选择通过 MinGW32/64 的方式来打开工程了。

但是由于种种原因,有很多种情况下并不能成功使用 CMAKE 来编译 OpenCV 的源码,此时就只能采用 MSVC 的方式来打开工程文件了,使用 MSVC 来创建工程有个非常不好用的地方就是中文编码的问题。

那应该怎么解决该问题呢?

这篇文章阐述了原因和解决方法,链接: https://blog.csdn.net/m_wordPlan/article/details/106397941

这里采用该解决方法。
在这里插入图片描述
在打开工程文件之前,

先将项目中 所有的头文件和源文件 全都转换成UTF-8+BOM编码保存。

在这里插入图片描述

这里以上述文件为例。

在这里插入图片描述
之后,打开工程。

在这里插入图片描述
在打开该工程文件后,就要根据前面讲解的链接 OpenCV 库,并修改 .pro 文件中的路径(因为打开的工程是别人采用 Mingw 或者 MSVC 的方式链接过了 Opencv 库,所以要将别人的删除,改成自己的)

在这里插入图片描述
修改后如下,

在这里插入图片描述
如果 build 报错,重新来过。

运行代码,会有中文的问题。于是,按照解决方法在用到中文字符的头文件和源文件开头加上 MSVC 的一个宏:

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

此时,运行下代码看是否成功就好了。

四、调用 OpenCV 库中函数的中文问题。

调用 OpenCV 库函数时,需要注意的是路径不能指定为中文。但是指定窗口名称是可以使用中文的。

    cv::namedWindow("输入图片",cv::WINDOW_FREERATIO);
    cv::imshow("输入图片", src);

但是为了解决在 MSVC 工程中的中文问题时,在用到中文字符的头文件和源文件开头加上 一段宏,从而就导致了调用 OpenCV 库中函数中的中文显示乱码,所以,之后在使用 OpenCV 库中函数还是使用英文比较好。

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xuechanba

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

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

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

打赏作者

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

抵扣说明:

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

余额充值