在 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 版本 。
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第1张图片
按照上述链接中的步骤做,

1、环境变量
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第2张图片
(需要注意要与CMake中对应),即:
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第3张图片
1、设置环境变量之后要重启电脑。

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

CMake版本:
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第4张图片
还有个问题(在Generate之前设置就行):
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第5张图片
之后,基本就好了。
(注:要编译成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 版本呢?

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第6张图片
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第7张图片

2、配置系统环境变量

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第8张图片

3、创建 QT 项目
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第9张图片

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第10张图片
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第11张图片
注意这里选择 MSVC 的,我这里选择 MSV2019 64 bit,
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第12张图片
之后,一路 next,建立好工程。这里选择 Release,

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第13张图片
然后,链接 OpenCV 库。

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第14张图片
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第15张图片
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第16张图片
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第17张图片
之后,点击完成。然后打开 .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;
}

运行效果如下,

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第18张图片

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第19张图片

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

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

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

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

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

这里采用该解决方法。
在 QT Creator 上配置 opencv 环境的一些认识和注意点_第20张图片
在打开工程文件之前,

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

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第21张图片

这里以上述文件为例。

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第22张图片
之后,打开工程。

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第23张图片
在打开该工程文件后,就要根据前面讲解的链接 OpenCV 库,并修改 .pro 文件中的路径(因为打开的工程是别人采用 Mingw 或者 MSVC 的方式链接过了 Opencv 库,所以要将别人的删除,改成自己的)

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第24张图片
修改后如下,

在 QT Creator 上配置 opencv 环境的一些认识和注意点_第25张图片
如果 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 库中函数还是使用英文比较好。

你可能感兴趣的:(笔记,opencv,qt,python)