Qt5.14 与 OpenCV4.5 教程之图片增强效果

首先,我们需要安装 Qt5.14 和 OpenCV4.5。安装过程请自行查阅相关资料。

接下来,我们开始讲解如何使用 Qt5.14 与 OpenCV4.5 实现图片增强效果。步骤如下:

准备工作

  1. 创建一个新的Qt Widgets Application项目。

  2. 在 main.cpp 文件中,添加以下代码:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
  1. 在 MainWindow.h 文件中添加以下代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <opencv2/opencv.hpp>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_actionOpen_triggered();

private:
    Ui::MainWindow *ui;
    cv::Mat image;
};

#endif // MAINWINDOW_H
  1. 在 MainWindow.cpp 文件中添加以下代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_actionOpen_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), ".", tr("Image Files (*.png *.jpg *.bmp)"));
    this->image = cv::imread(fileName.toStdString());
}

图像增强

  1. 实现图像锐化
void MainWindow::sharpen(int *kernel)
{
    cv::Mat kernelMat(3, 3, CV_32F, kernel);
    cv::filter2D(image, image, image.depth(), kernelMat);
    this->showImage(image);
}
  1. 实现直方图均衡
void MainWindow::histogramEqualization()
{
    cv::cvtColor(image, image, CV_BGR2GRAY);
    cv::equalizeHist(image, image);
    this->showImage(image);
}

图片显示

  1. 在 MainWindow.cpp 文件中添加以下函数
void MainWindow::showImage(const cv::Mat &mat)
{
    QImage image;
    if(mat.type() == CV_8UC1)
    {
        image = QImage(mat.data, mat.cols, mat.rows, mat.step, QImage::Format_Grayscale8);
    }
    else if(mat.type() == CV_8UC3)
    {
        image = QImage(mat.data, mat.cols, mat.rows, mat.step, QImage::Format_RGB888);
    }

    ui->label->setPixmap(QPixmap::fromImage(image));
    ui->label->resize(ui->label->pixmap()->size());
}
  1. 在 MainWindow::on_actionOpen_triggered 函数中,添加以下代码:
this->showImage(image);

这样,我们就实现了图像锐化和直方图均衡的功能,并可以在Qt窗口中显示图像。可以通过编写接口或者按钮来实现图形界面的交互。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Qt5.14 与 OpenCV4.5 教程之图片增强效果 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 电脑卡死出现应用程序未响应不可以正常工作怎么办?

    电脑卡死出现应用程序未响应的解决方法 当电脑卡死时,常常会出现应用程序未响应的情况,此时我们需要采取一些措施来解决这个问题。 1. 关闭不响应的应用程序 当一个应用程序未响应时,我们可以尝试关闭它以恢复系统正常运行。具体步骤如下: 在任务栏上找到该应用程序的图标,右键单击。 选择“关闭”选项,或者是选择“强制关闭”选项如果该应用程序没有任何响应。 在弹出的对…

    other 2023年6月25日
    00
  • antd upload上传组件如何获取服务端返回数据

    对于antd的上传组件,根据官方文档的说明,上传成功后会自动解析服务端返回的数据,并将其设置为上传组件的fileList属性的一项。但有时候,我们需要手动获取服务端返回的数据,这时候可以利用 antd 的customRequest属性和 Promise 对象实现。 customRequest属性用于自定义上传行为,可以接收一个函数作为参数,该函数会在上传时被…

    other 2023年6月27日
    00
  • centos_serverwithgui入门

    CentOS Server with GUI 入门攻略 CentOS是一种流行的Linux操作系统,它是基于Red Hat Enterprise Linux(RHEL)源代码构建的。CentOS Server with GUI是CentOS的一个版本,包含了图形用户界面(GUI),可以方便地进行系统管理和配置。在本攻略中,我们将介绍如何安装和配置CentOS…

    other 2023年5月6日
    00
  • Vue封装全局过滤器Filters的步骤

    下面是Vue封装全局过滤器Filters的步骤的详细讲解。 步骤一:在Vue中定义全局过滤器 在Vue中定义全局过滤器的操作比较简单,我们只需要在Vue实例的filters属性中定义一个函数,然后在模板中使用{{ 表达式 | 过滤器名 }}的方式进行调用。 示例一 下面是一个将数字金额转换为万元的全局过滤器的例子: Vue.filter(‘toWanYuan…

    other 2023年6月25日
    00
  • Gitlab CI-CD自动化部署SpringBoot项目的方法步骤

    下面是Gitlab CI-CD自动化部署SpringBoot项目的方法步骤的完整攻略: 1. 搭建基础环境 在开始之前,需要确定一个服务器或者主机用于进行代码的自动化构建和部署。服务器需要安装以下软件: Gitlab:用于托管代码和CI-CD流程 JDK:用于编译和运行SpringBoot项目 Maven:用于管理和构建项目依赖 Docker:用于打包和运行…

    other 2023年6月27日
    00
  • 非常实用的windows运行打开服务命令

    在Windows操作系统中,有许多实用的运行打开服务命令,可以帮助您快速访问和管理系统中的各种服务。以下是使用这些命令的完整攻略: 步骤1:打开运行窗口 首先,您需要打开运行窗口。您可以使用以下快捷键打开运行窗口: Windows键 + R 步骤2:输入服务命令 在运行窗口中,您可以输入以下命令来访问和管理系统中的各种服务: 1. services.msc …

    other 2023年5月9日
    00
  • 删除这些Windows文件和文件夹以释放磁盘空间

    下面我会提供详细的标准markdown格式文本,来讲解“删除这些Windows文件和文件夹以释放磁盘空间”的完整攻略。 删除Windows文件和文件夹的攻略 当你的电脑提示磁盘空间不足,可以考虑删除一些不必要的Windows文件和文件夹,以释放磁盘空间。以下是具体步骤: 步骤1:清理系统文件 在计算机中右键单击需要清理的驱动器,选择“属性”。 在“常规”选项…

    other 2023年6月27日
    00
  • Win8.1怎么彻底关闭应用程序具体该如何操作

    当用户在Windows 8.1电脑上关闭应用程序时,它们通常仍然在后台运行,消耗计算机内存和CPU资源。在这种情况下,彻底关闭应用程序可能会对计算机性能产生积极影响。以下是Win8.1怎么彻底关闭应用程序的具体步骤: 步骤1 – 使用任务管理器关闭应用程序 1.按下键盘上的“Ctrl”、“Shift”、“Esc”三个键,打开任务管理器。2.在任务管理器中点击…

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