我参考的视频是: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原因失败的。)
参考视频链接: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、配置系统环境变量
注意这里选择 MSVC 的,我这里选择 MSV2019 64 bit,
之后,一路 next,建立好工程。这里选择 Release,
之后,点击完成。然后打开 .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 的 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 库,所以要将别人的删除,改成自己的)
运行代码,会有中文的问题。于是,按照解决方法在用到中文字符的头文件和源文件开头加上 MSVC 的一个宏:
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
此时,运行下代码看是否成功就好了。
调用 OpenCV 库函数时,需要注意的是路径不能指定为中文。但是指定窗口名称是可以使用中文的。
cv::namedWindow("输入图片",cv::WINDOW_FREERATIO);
cv::imshow("输入图片", src);
但是为了解决在 MSVC 工程中的中文问题时,在用到中文字符的头文件和源文件开头加上 一段宏,从而就导致了调用 OpenCV 库中函数中的中文显示乱码,所以,之后在使用 OpenCV 库中函数还是使用英文比较好。