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日

相关文章

  • Android四大组件之Activity详细介绍

    当涉及到Android开发中的四大组件之一的Activity时,它是用户界面的核心部分。下面是对Activity的详细介绍: Activity是什么? Activity是Android应用程序中的一个组件,它代表了一个用户界面的单个屏幕。每个Activity都有一个与之关联的布局文件,用于定义界面的外观和交互。Activity可以包含用户交互元素,如按钮、文…

    other 2023年10月16日
    00
  • CMD里或登陆远程linux服务器时命令行下复制和粘贴实现方法

    要在CMD命令行或远程登录Linux服务器的命令行下实现复制和粘贴,可以通过以下几种方法: 1. 使用鼠标右键复制和粘贴 在Windows系统下,可以在CMD命令行窗口中,使用鼠标右键来复制和粘贴文本。具体操作如下: 复制:选中要复制的文本,然后右键单击选中的文本,选择“复制”命令,或者直接按下“Enter”键即可将文本复制到系统剪贴板中。 粘贴:右键单击C…

    other 2023年6月26日
    00
  • win7系统如何批量修改文件和文件夹权限右键没有安全选项卡

    如果在Windows 7系统中需要批量修改文件或文件夹的权限,但是发现右键菜单中没有“安全”选项卡,那么可以按照以下步骤来解决: 方法一:通过组策略编辑器来添加安全选项卡 以管理员身份打开“组策略编辑器”(gpedit.msc); 在“计算机配置”——“管理模板”——“Windows组件”下找到“Windows资源管理器”; 右侧窗口双击“阻止访问网络位置中…

    other 2023年6月27日
    00
  • atom编辑器汉化

    以下是关于“Atom编辑器汉化”的完整攻略: Atom编辑器简介 Atom是一个开源的文本编辑器,由GitHub开发,持多种编程语言和插件。的特点是高度可定制性、易扩展性、跨平台。 Atom编辑器汉化 Atom编辑器默认是英文界面,是可以通过安装汉化包来将界面汉化。以下是两种安装汉化包的方法: 方法一:使用apm命令安装汉化包 可以使用apm命令来安装汉化包…

    other 2023年5月9日
    00
  • Java实现双向链表(两个版本)

    下面是详细讲解Java实现双向链表的完整攻略。 双向链表定义 双向链表是链表的一种,每个节点都包含两个指针,一个指向前一个节点,一个指向后一个节点。相对于单向链表,双向链表可以实现双向遍历,但是占用空间较大。 双向链表的实现 版本一 双向链表的每个节点需要维护前向指针和后向指针,因此我们可以定义一个Node类来封装节点信息,再定义一个双向链表类来封装链表信息…

    other 2023年6月27日
    00
  • python下pip的安装【get-pip】

    以下是关于“Python下pip的安装【get-pip】”的完整攻略,包括定义、方法、示例说明和注意事项。 定义 pip是Python的包管理工具,可以用于安装、升级和卸载Python包。在Python 2.7.9及以上版本和Python 3.4及以上版本中,pip已经默认安装。如果你的Python版本低于这些版本,或者你需要升级pip到最新版本,可以使用-…

    other 2023年5月8日
    00
  • Android编程获取APP应用程序基本信息辅助类【APP名称、包名、图标,版本号等】

    Android编程获取APP应用程序基本信息辅助类【APP名称、包名、图标,版本号等】的完整攻略 在Android开发过程中,我们经常需要获取应用程序的基本信息,例如应用程序的名称、包名、图标、版本号等。这些信息可以帮助我们更好地为用户提供服务,也可以帮助我们更好地管理应用程序。在这篇文章中,我将介绍如何通过编程获取应用程序的基本信息。 1. 获取应用程序名…

    other 2023年6月25日
    00
  • cbs.log体积很大 是什么文件 cbs.log可以删除吗

    问题解答 1. \”cbs.log\” 是什么文件? \”cbs.log\” 是 Windows 操作系统中的一个日志文件,它记录了系统组件和服务的安装、卸载、更新和修复过程中的详细信息。CBS (Component Based Servicing) 是 Windows 中负责组件管理和维护的服务,它负责处理软件包的安装、更新和修复。\”cbs.log\” …

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