歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

Copyright © Linux教程網 All Rights Reserved