当前位置:网站首页>在 QT Creator 上配置 opencv 环境的一些认识和注意点
在 QT Creator 上配置 opencv 环境的一些认识和注意点
2022-08-02 08:09:00 【xuechanba】
在 QT Creator 上配置 opencv 环境的一些认识和注意点
一、OpenCV4 + QT Creator + Cmake
我参考的视频是:https://www.bilibili.com/video/BV1aa411E7DW?spm_id_from=333.880.my_history.page.click&vd_source=b91967c499b23106586d7aa35af46413
以及https://www.bilibili.com/video/BV1Za4y1v7ra?p=1&vd_source=b91967c499b23106586d7aa35af46413
按照第一个链接中的视频进行操作,不知道什么原因,没有成功,一编译到 target opencv_dnn 就不行了。使用的 Qt 版本是 Qt Creator 6.0.1 (Community), OpenCV 版本是4.5.5,失败后又试了视频中提到的 opencv 4.5.1 版本,但是很遗憾,没有成功。又尝试了在配置模块时,没有勾选 BUILD opencv_dnn 这个选项,也不行。
使用第二个链接中的视频操作,也崩了,跳出了一连串问题。
我怀疑是 python 版本(使用了 Anacanda)的问题,因为编译时有警告产生,说是 python 版本不对,貌似要求 python 2.7 的版本,我就想使用 Anacanda 再搭建一个 python 2.7 版本的环境,但是也很遗憾,下载 python 2.7 版本也没有成功,于是决定放弃,采用下面 OpenCV4 + QT Creator + VS编译器的方式。也只能这样了。
还有个问题是,由于在 PyCharm 中安装了 PyQt6 和 PyQt5 等模块,不知有没有影响,但在 CMake 配置界面中有报错要求重新指定路径的,其中一个是 QT6 的路径未指定,QT5 相关的我又重新指定了一下路径,但是最终还是不行。
之后,如果要用到的话,可以先选择与视频中一样的软件版本(Qt Creator 和 OpenCV 版本都一样),同时先别忙安装高版本的 python 编译器。
如果实在没办法,也就只能选择下面的方式了。
二、OpenCV4 + QT Creator + VS编译器,C++开发配置
这里把步骤列在下面:
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 库中函数还是使用英文比较好。
边栏推荐
猜你喜欢
BGP solves routing black hole through MPLS
EPSANet: An Efficient Pyramid Split Attention Block on Convolutional Neural Network
IO进程线程->进程->day4
prometheus监控mysql_galera集群
Biotin-C6-amine|N-biotinyl-1,6-hexanediamine|CAS: 65953-56-2
Figure robot software digital twin station oil and gas pipelines, oil and gas transportation control platform
PyQt5 (a) PyQt5 installation and configuration, read from the folder and display images, simulation to generate the sketch image
Button to control the running water light (timer)
C Language Basics_Union
postman使用方法
随机推荐
传递泛型给JSX元素
Biotin-LC-Hydrazide|CAS:109276-34-8|生物素-LC-酰肼
知识点滴 - 为什么一般不用铜锅做菜
@PostConstruct注解详解
如何做好项目管理
cas:139504-50-0 美登素DM1|Mertansine|
pycharm的基本使用教程(1)
@Repository详解
EPSANet: An Efficient Pyramid Split Attention Block on Convolutional Neural Network
mysql去除重复数据
The crawler video crawl tools you get
redis的安装与应用
CASA模型、CENTURY模型应用与案例分析
QT web development - Notes - 3
十大免费cms建站系统介绍推荐
OneNote 教程,如何在 OneNote 中创建更多空间?
3D激光slam:LeGO-LOAM---地面点提取方法及代码分析
那些年我们踩过的 Flink 坑系列
Wang Xuegang - compiled shipment line file
day_05_pickel 和 json