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

yizhihongxing

首先,我们需要安装 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日

相关文章

  • 浅谈php的ci框架(一)

    浅谈PHP的CI框架(一) PHP是一种广泛使用的Web编程语言,已经被许多顶级网站采用,如Facebook、Wikipedia、Yahoo等。而在PHP的众多框架中,CodeIgniter(简称CI)是其中之一。 什么是CI框架? CI是一个开源的PHP框架,由EllisLab公司所开发,在MIT协议下发布。它是一个轻量级框架,主要设计目的是使WEB应用程…

    其他 2023年3月29日
    00
  • mysql为字段添加和删除唯一性索引(unique) 的方法

    为字段添加唯一性索引可以保证该字段值的唯一性,避免出现重复的数据。下面介绍 MySQL 对字段添加和删除唯一性索引的方法。 添加唯一性索引 添加唯一性索引的语法 添加唯一性索引的语法如下: ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name); 其中,table_…

    other 2023年6月25日
    00
  • 软件工程第二次作业——git的使用

    软件工程第二次作业——git的使用 什么是Git? Git是目前世界上最先进的分布式版本控制系统,也是开源免费软件。Git有极强的分支管理能力,可以高效、安全地处理多人同时开发,适用于各种规模的项目。 为什么应该使用Git? 在软件开发过程中,版本控制是必不可少的工具。使用Git可以方便地跟踪代码变化、保存历史版本、协同开发等等,更可以确保代码的安全性和可追…

    其他 2023年3月28日
    00
  • 在Spring Boot中加载XML配置的完整步骤

    要在Spring Boot中加载XML配置,需要以下几个步骤: 第一步:在pom.xml文件中添加依赖 Spring Boot默认是不支持加载XML配置文件的,需要添加一个额外的依赖来支持XML配置文件的加载。可以在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.…

    other 2023年6月25日
    00
  • 图解二叉树的三种遍历方式及java实现代码

    首先我们来了解一下二叉树这个数据结构。二叉树是一种特殊的树形结构,它由一系列节点组成,每个节点最多拥有两个子节点。其中一个节点称为父节点,其两个子节点分别称为左子节点和右子节点。二叉树的遍历指的是按照某种方式依次访问二叉树中的所有节点的过程。常见的二叉树遍历方式有三种,即前序遍历、中序遍历和后序遍历。 一、前序遍历 前序遍历指的是从二叉树的根节点开始,先遍历…

    other 2023年6月27日
    00
  • DOS批处理中%~dp0等扩充变量语法详解

    DOS批处理中%~dp0等扩充变量语法详解攻略 在DOS批处理脚本中,%~dp0是一种扩充变量语法,用于获取当前批处理脚本所在的目录路径。这个语法非常有用,可以帮助我们在脚本中获取当前目录的路径,从而方便地执行一些操作。 语法解释 %~dp0:%0表示当前批处理脚本的名称,d表示获取驱动器号,p表示获取路径,0表示获取脚本的完整路径。 示例说明 示例一 假设…

    other 2023年8月9日
    00
  • 一文详解C++子类函数为什么不能重载父类函数

    当C++子类函数与其父类的同名函数具有不同的参数列表时,这种情况被称为函数重载。然而,当子类函数尝试重载其父类函数时,编译器会给出一个错误的信息。本文将为大家解释为什么会发生这种情况,并提供两个示例来帮助读者更好地了解这个问题。 为什么子类函数不能重载父类函数? 让我们从继承和多态性的角度来考虑这个问题。在C++中,子类可以继承其父类的函数,并且如果需要,子…

    other 2023年6月26日
    00
  • .NET Framework在哪查看版本?.NET Framework查看版本技巧

    .NET Framework版本查看攻略 1. 使用命令提示符(Command Prompt) 通过命令提示符可以快速查看已安装的.NET Framework版本。以下是具体步骤: 打开命令提示符。你可以在开始菜单中搜索\”命令提示符\”,然后点击打开。 在命令提示符窗口中,输入以下命令并按下回车键: reg query \”HKEY_LOCAL_MACHI…

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