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

2014-11-24 07:34:59 · 作者: · 浏览: 2

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


程序界面



原始图像



处理后的图像



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


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);