OpenCV与Qt的环境搭建及Demo
在本文中,我们将学习如何在Windows操作系统下,搭建OpenCV与Qt的环境,并了解如何用Qt编写并运行一个基础的OpenCV应用。
环境搭建
安装OpenCV
在Windows系统下,安装OpenCV的最简单方法是通过 OpenCV官网的安装程序。下载对应版本的exe文件,按照安装向导逐步完成安装。安装完成后,将OpenCV的bin目录添加至系统环境变量中,方便我们在命令行中使用OpenCV的命令行工具。
安装Qt
Qt是跨平台的应用程序开发框架,它可以方便地创建GUI应用程序。我们可以通过Qt官网下载开源版本的Qt。安装过程中需要选择与Visual Studio相应的版本,这里不再赘述。
通过CMake集成OpenCV和Qt
Qt和OpenCV的集成可以通过CMake实现。首先,需要下载和安装最新版本的CMake。 然后,我们需要设置CMake:
- 打开CMake GUI工具。
- 在“Where is the source code”框中输入OpenCV和Qt的源代码路径,即OpenCV和Qt源代码解压后的路径。这里我们假设OpenCV和Qt已经下载并解压缩至C:/opencv和C:/Qt,因此路径分别输入C:/opencv/sources和C:/Qt。
- 在“Where to build the binaries”框中输入项目构建目录的路径,这里我们假设将项目构建至C:/build目录。
- 点击“Configure”按钮,选择使用的IDE,这里我们选择Visual Studio,并确保选中了“Use default native compilers”选项。 CMake将自动检测您的环境并生成默认的配置。
-
在缺省配置的基础上,修改以下的几个参数:
-
OPENCV_DIR:OpenCV的安装目录,这里我们输入C:/opencv/build目录。
- Qt5_DIR:Qt的安装目录,这里我们输入C:/Qt/5.13.0/msvc2017_64/lib/cmake/Qt5目录。
- CMAKE_BUILD_TYPE:设置构建的类型,可以设置为Debug或Release。在这里,我们选择Release。
-
CMAKE_PREFIX_PATH:设置Qt的安装路径,这里我们输入C:/Qt/5.13.0/msvc2017_64目录。
-
重新点击“Configure”按钮,确保没有出现错误或警告。如果出现错误,可以根据提供的错误信息进行修正。一般情况下,错误信息很容易理解,并成功进行修正。
- 点击“Generate”按钮得到Visual Studio的项目。
开发OpenCV与Qt应用程序
创建Qt项目
使用Qt Creator创建Qt project:
- 启动Qt Creator。
- 选择“File”->“New File or Project”菜单项。
- 选择Application -> Qt Widgets Application项目类型,设置项目名称和存储路径。
- 选择“Kit Selection”页,选择您的基础开发平台和QT版本。
- 选择“Class”页,设置应用程序包含的类的名称和类型。
集成OpenCV
- 将OpenCV的头文件路径和库文件路径添加至项目的.pro文件中:
INCLUDEPATH += C:/opencv/build/include/opencv4
LIBS += C:/opencv/build/x64/vc16/lib/opencv_world410.lib
- 将OpenCV的dll文件复制到您的项目输出目录下。
编写OpenCV与Qt的应用程序
在Qt项目中,我们可以使用OpenCV库中的函数来进行图像处理,甚至可以用Qt界面展示处理后的图像。
以下是一个使用OpenCV和Qt完成图片灰度处理并显示的示例程序。
#include <QFileDialog>
#include <QImage>
#include <QLabel>
#include <QVBoxLayout>
#include <opencv2/opencv.hpp>
class MainWindow : public QWidget
{
public:
MainWindow(QWidget *parent = nullptr)
{
// 创建GUI部件
QVBoxLayout *layout = new QVBoxLayout(this);
m_imageLabel = new QLabel();
m_imageLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
layout->addWidget(m_imageLabel);
// 加载图片
loadFile();
// 图片灰度处理
cvtColor(m_cvImage, m_cvImage, cv::COLOR_BGR2GRAY);
// 将OpenCV图像转换为Qt图像
QImage img(m_cvImage.data,
m_cvImage.cols,
m_cvImage.rows,
m_cvImage.step,
QImage::Format_Grayscale8);
// 显示图像
m_imageLabel->setPixmap(QPixmap::fromImage(img));
}
private:
QLabel *m_imageLabel;
cv::Mat m_cvImage;
void loadFile()
{
// 选择图片文件
QString fileName = QFileDialog::getOpenFileName(this, "", "", tr("Images (*.png *.jpg)"));
if (fileName.isEmpty())
return;
// 加载图片
m_cvImage = cv::imread(fileName.toStdString());
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
在程序中,我们使用了两个库:Qt和OpenCV。首先,我们用QFileDialog
加载了一幅图片,将其转换为OpenCV的图片格式。然后,我们使用OpenCV函数cvtColor
将图片转换为灰度图像。最后,我们使用QImage将OpenCV图像转换为Qt图像,并使用QLabel将其展示出来。
通过类似的方法,您可以实现更复杂的应用程序。OpenCV和Qt是两个强大的工具,它们结合使用可以实现更多的图像处理功能。
总结
在本文中,我们讲解了OpenCV和Qt的环境搭建并提供了一个简单的演示程序。希望这篇文章对开发者们有所帮助。如果您需要更深入地研究OpenCV和Qt,可以访问官方文档或参考其他教程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:OpenCV与Qt的环境搭建及Demo - Python技术站