OpenCV与Qt的环境搭建及Demo

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:

  1. 打开CMake GUI工具。
  2. 在“Where is the source code”框中输入OpenCV和Qt的源代码路径,即OpenCV和Qt源代码解压后的路径。这里我们假设OpenCV和Qt已经下载并解压缩至C:/opencv和C:/Qt,因此路径分别输入C:/opencv/sources和C:/Qt。
  3. 在“Where to build the binaries”框中输入项目构建目录的路径,这里我们假设将项目构建至C:/build目录。
  4. 点击“Configure”按钮,选择使用的IDE,这里我们选择Visual Studio,并确保选中了“Use default native compilers”选项。 CMake将自动检测您的环境并生成默认的配置。
  5. 在缺省配置的基础上,修改以下的几个参数:

  6. OPENCV_DIR:OpenCV的安装目录,这里我们输入C:/opencv/build目录。

  7. Qt5_DIR:Qt的安装目录,这里我们输入C:/Qt/5.13.0/msvc2017_64/lib/cmake/Qt5目录。
  8. CMAKE_BUILD_TYPE:设置构建的类型,可以设置为Debug或Release。在这里,我们选择Release。
  9. CMAKE_PREFIX_PATH:设置Qt的安装路径,这里我们输入C:/Qt/5.13.0/msvc2017_64目录。

  10. 重新点击“Configure”按钮,确保没有出现错误或警告。如果出现错误,可以根据提供的错误信息进行修正。一般情况下,错误信息很容易理解,并成功进行修正。

  11. 点击“Generate”按钮得到Visual Studio的项目。

开发OpenCV与Qt应用程序

创建Qt项目

使用Qt Creator创建Qt project:

  1. 启动Qt Creator。
  2. 选择“File”->“New File or Project”菜单项。
  3. 选择Application -> Qt Widgets Application项目类型,设置项目名称和存储路径。
  4. 选择“Kit Selection”页,选择您的基础开发平台和QT版本。
  5. 选择“Class”页,设置应用程序包含的类的名称和类型。

集成OpenCV

  1. 将OpenCV的头文件路径和库文件路径添加至项目的.pro文件中:

INCLUDEPATH += C:/opencv/build/include/opencv4
LIBS += C:/opencv/build/x64/vc16/lib/opencv_world410.lib

  1. 将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技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • thymeleaf实现th:each双重多重嵌套功能

    Thymeleaf实现th:each双重多重嵌套功能攻略 Thymeleaf是一种用于在Web应用程序中创建动态内容的模板引擎。它提供了强大的功能,包括th:each指令,可以用于在模板中进行循环迭代。本攻略将详细介绍如何使用Thymeleaf的th:each指令实现双重多重嵌套功能。 1. 基本语法 在Thymeleaf中,th:each指令用于迭代集合或…

    other 2023年7月28日
    00
  • linux下解压war格式的包

    以下是Linux下解压war格式的包的完整攻略,包括以下内容: 概述 解压war格式的包的基本用法 示例说明 1. 概述 在Linux系统中,war格式的包是一种常见的Java Web应用程序打包格式。解压war格式的包可以查看其中的文件和目录结构,也可以修改其中的文件。本文将介绍如何在Linux系统中解压war格式的包。 2. 解压war格式的包的基本用法…

    other 2023年5月9日
    00
  • 一款js和css代码压缩工具[附JAVA环境配置方法]

    一款JS和CSS代码压缩工具攻略 本攻略将详细介绍一款用于压缩JS和CSS代码的工具,并提供JAVA环境配置方法。以下是完整的攻略过程: 1. 工具介绍 该工具是一款用于压缩JS和CSS代码的工具,可以帮助开发者减小文件体积,提高网页加载速度。它使用JAVA语言编写,支持跨平台运行。 2. JAVA环境配置 为了运行该工具,您需要先配置JAVA环境。请按照以…

    other 2023年8月8日
    00
  • iyuu自动辅种工具配置及常见错误(windows)

    以下是关于“iyuu自动辅种工具配置及常见错误(windows)”的完整攻略,包含两个示例。 iyuu自动辅种工具配置及常见错误(windows) iyuu自动辅种工具是一款常用的自动化工具,可以帮助用户自动辅种。在windows系统中,我们可以通过配置iyuu自动辅种工具来实现自动辅种。下面我们将介绍iyuu自动辅种工具的配置方法和常见错误。 1. iyu…

    other 2023年5月9日
    00
  • 360安全卫士怎么给电脑软件设置优先级?

    360安全卫士如何给电脑软件设置优先级 什么是软件优先级 软件优先级是指在多任务操作系统中,设置某个软件程序的运行优先级。较高的运行优先级可以使软件在资源竞争中获得更多的系统资源,从而提高其运行效率。 步骤 下面是使用360安全卫士给电脑软件设置优先级的步骤: 打开360安全卫士软件。在桌面或任务栏上找到并双击打开360安全卫士。 选择优化加速功能。在360…

    other 2023年6月28日
    00
  • windows系统搭建WEB服务器详细教程

    下面我给你详细讲解“windows系统搭建WEB服务器详细教程”的完整攻略。该攻略主要分为以下几步: 步骤1:选择合适的Web服务器软件 在Windows系统上,常用的Web服务器软件有IIS、Apache、Nginx等。其中,IIS是Windows系统自带的Web服务器软件,但其功能和灵活性相对较弱,不推荐使用。而Apache和Nginx是开源免费的Web…

    other 2023年6月27日
    00
  • Lua中的模块与module函数详解

    Lua中的模块与module函数详解 在Lua中,模块是一种组织代码的方式,可以将相关的函数、变量和常量封装在一个独立的单元中。模块的使用可以提高代码的可维护性和重用性。Lua提供了module函数来定义和使用模块。 定义模块 要定义一个模块,可以使用module函数。下面是一个简单的示例: — mymodule.lua module(\"mym…

    other 2023年7月29日
    00
  • 电脑不显示文件扩展名怎么解决?

    电脑不显示文件扩展名的解决攻略 有时候,电脑上的文件扩展名可能会被隐藏起来,这可能会导致一些困惑和不便。下面是解决这个问题的完整攻略,包括两个示例说明。 步骤1:打开文件资源管理器选项 首先,我们需要打开文件资源管理器选项,以便进行相关设置。 在任务栏上,右键单击文件资源管理器图标(一个黄色的文件夹图标)。 在弹出菜单中,选择“属性”。 步骤2:显示文件扩展…

    other 2023年8月5日
    00
合作推广
合作推广
分享本页
返回顶部