使用Qt和OpenCV做的图片平滑器


这是我这学期数字图像处理课的课程设计。

程序界面

原始图像

处理后的图像

虽然界面很简陋,但处理效果还好

mainwindow.h 文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
<QMainWindow>
#include
<QFileDialog>
#include
<opencv.hpp>
usingnamespace cv;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
   
public:
   
explicit MainWindow(QWidget *parent =0);
   
~MainWindow();
   
private:
    Ui::MainWindow
*ui;
    Mat image;   
//载入的原始图片
    Mat result;    //处理后的图片
private slots:
   
void liulan();    //载入图片
    void chuli();    //对图片进行低通滤波
    void baocun();    //保存图片
};
#endif// MAINWINDOW_H

mainwindow.cpp文件

#include "mainwindow.h"
#include
"ui_mainwindow.h"
MainWindow::MainWindow(QWidget
*parent) :
    QMainWindow(parent),
    ui(
new Ui::MainWindow)
{
    ui
->setupUi(this);
    connect(ui
->liulanButton,SIGNAL(clicked()),this,SLOT(liulan()));
    connect(ui
->xianshiButton,SIGNAL(clicked()),this,SLOT(chuli()));
    connect(ui
->baocunButton,SIGNAL(clicked()),this,SLOT(baocun()));
}
MainWindow::
~MainWindow()
{
    delete ui;
}
void MainWindow::liulan() 
{
    QString imageName
=QFileDialog::getOpenFileName(this,"Open file");
    image
=imread(imageName.toAscii().data());
}
void MainWindow::chuli() 
{
    cv::blur(image,result,cv::Size(
5,5));
    imshow(
"result",result);
    imshow(
"image",image);
}
void MainWindow::baocun() 
{
    QString fileName
= QFileDialog::getSaveFileName(this,"Save file");
    imwrite(fileName.toAscii().data(),result);

  • 1
  • 2
  • 3
  • 下一页

相关内容