当前位置: 代码迷 >> QT开发 >> 分享:应用Qt和OpenCV做的图像平滑器
  详细解决方案

分享:应用Qt和OpenCV做的图像平滑器

热度:102   发布时间:2016-04-25 04:38:16.0
分享:使用Qt和OpenCV做的图像平滑器
这是我这学期数字图像处理课的课程设计。
程序界面

原始图像

处理后的图像

虽然界面很简陋,但处理效果还好。
 mainwindow.h 文件
C/C++ code
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include<QFileDialog>#include<opencv.hpp>using namespace 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文件
C/C++ code
#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);

mainwindow.ui文件
XML code
<?xml version="1.0" encoding="UTF-8"?><ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow">  <property name="geometry">   <rect>    <x>0</x>    <y>0</y>    <width>400</width>    <height>300</height>   </rect>  </property>  <property name="windowTitle">   <string>MainWindow</string>  </property>  <widget class="QWidget" name="centralWidget">   <widget class="QPushButton" name="liulanButton">    <property name="geometry">     <rect>      <x>150</x>      <y>40</y>      <width>75</width>      <height>23</height>     </rect>    </property>    <property name="text">     <string>浏览</string>    </property>   </widget>   <widget class="QPushButton" name="xianshiButton">    <property name="geometry">     <rect>      <x>150</x>      <y>130</y>      <width>75</width>      <height>23</height>     </rect>    </property>    <property name="text">     <string>处理</string>    </property>   </widget>   <widget class="QPushButton" name="baocunButton">    <property name="geometry">     <rect>      <x>150</x>      <y>200</y>      <width>75</width>      <height>23</height>     </rect>    </property>    <property name="text">     <string>保存文件</string>    </property>   </widget>  </widget>  <widget class="QMenuBar" name="menuBar">   <property name="geometry">    <rect>     <x>0</x>     <y>0</y>     <width>400</width>     <height>23</height>    </rect>   </property>  </widget>  <widget class="QToolBar" name="mainToolBar">   <attribute name="toolBarArea">    <enum>TopToolBarArea</enum>   </attribute>   <attribute name="toolBarBreak">    <bool>false</bool>   </attribute>  </widget>  <widget class="QStatusBar" name="statusBar"/> </widget> <layoutdefault spacing="6" margin="11"/> <resources/> <connections/></ui>