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日

相关文章

  • Win98注册表应用50例—注册表使用全攻略之十

    Win98注册表应用50例—注册表使用全攻略之十 简介 本文是Win98注册表应用50例系列的第十篇。我们将探讨Win98注册表的使用,从而全面应用Windows操作系统。 目录 删去最近文档列表中的不需要的文件 禁用键盘启动菜单 修改E-mail客户端图标 定义默认的Internet缓冲区大小 修改记事本的默认字体 修改记事本中的制表符间距 1. 删去最近…

    other 2023年6月25日
    00
  • 学习使用Bootstrap页面排版样式

    学习使用Bootstrap页面排版样式攻略 Bootstrap是一个流行的前端开发框架,它提供了一套强大的页面排版样式,可以帮助开发者快速构建美观且响应式的网页。下面是学习使用Bootstrap页面排版样式的完整攻略。 步骤一:引入Bootstrap 首先,你需要在你的HTML文件中引入Bootstrap。你可以通过以下方式引入: <!DOCTYPE …

    other 2023年8月18日
    00
  • 详谈PHP程序Laravel 5框架的优化技巧

    详谈PHP程序Laravel 5框架的优化技巧 Laravel 5是目前最流行的PHP框架之一,但是在处理大量请求和数据时,应用程序可能会面临性能瓶颈。以下是一些优化技巧,可以帮助您提高Laravel 5应用程序的性能。 1. 避免使用较慢的操作 在编写代码时,需要时刻关注应用程序中的每个操作对性能的影响。一些操作会比其他操作慢得多,最好尽可能避免使用这些操…

    other 2023年6月26日
    00
  • Android仿百度外卖自定义下拉刷新效果

    Android仿百度外卖自定义下拉刷新效果 在开发 Android 应用中,下拉刷新是一个很常见的需求。本篇教程将会介绍如何仿百度外卖的下拉刷新效果。 1. 布局 在布局文件中添加一个 SwipeRefreshLayout 控件作为父控件,并把需要刷新的布局放在其中。 示例代码: <androidx.swiperefreshlayout.widget.…

    other 2023年6月26日
    00
  • mybatis多层嵌套resultMap及返回自定义参数详解

    MyBatis多层嵌套ResultMap及返回自定义参数详解攻略 在使用MyBatis进行数据库操作时,有时候需要进行多表关联查询,并将结果映射到一个复杂的对象中。MyBatis提供了多层嵌套ResultMap的功能,可以方便地处理这种情况。同时,我们也可以返回自定义参数,以满足特定的业务需求。 1. 多层嵌套ResultMap 多层嵌套ResultMap允…

    other 2023年7月28日
    00
  • windows vista X86 RTM/OEM 中文正式版下载地址

    很抱歉,但我无法提供关于非法软件下载的信息。我是一个由OpenAI开发的AI模型,我遵守法律和道德准则,不会提供任何非法或侵犯版权的内容。如果您有其他关于Windows Vista或其他合法软件的问题,我将很乐意帮助您。

    other 2023年8月4日
    00
  • Win11如何更改exe文件后缀?Win11更改exe文件后缀的方法

    Win11如何更改exe文件后缀? 在Win11操作系统中,更改exe文件后缀非常简单。你可以按照以下步骤进行操作: 首先,找到你想要更改后缀的exe文件。你可以通过文件资源管理器或者桌面上的快捷方式找到它。 右键单击该文件,然后从弹出菜单中选择“重命名”。 在文件名上单击一次,然后将光标移动到文件名的末尾。 删除原来的后缀名(例如.exe)并输入你想要的新…

    other 2023年8月5日
    00
  • R语言服务器安装R包实现过程

    R语言服务器安装R包实现过程 在R语言服务器中,安装R包是非常常见的操作。下面是安装R包的完整过程: 打开R语言服务器的终端或命令行界面。 输入以下命令来进入R语言的交互式环境: R R 在R语言交互式环境中,使用install.packages()函数来安装R包。例如,我们要安装ggplot2包,可以执行以下命令: R install.packages(\…

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