Opencv+QT——第一个小程序学习

本文介绍了使用Qt和OpenCV进行图像处理的小程序开发过程,包括读取和保存图像文件,应用中值滤波和高斯滤波,以及程序关闭时的设置保存。通过实例演示了如何在Qt界面中集成OpenCV功能。

主要实现的界面:
在这里插入图片描述
对于QT中的布局和各个布件的功能就不解释了。
在这个小程序中,我学到了几个主要的功能:

1.读取文件和储存文件

用到了头函数:

#include <QFileDialog>
#include <QDir>

读取文件:

void MainWindow::on_inputpushButton_pressed()
{
    QString filename=QFileDialog::getOpenFileName(this,"Open Input Image",QDir::currentPath(),"*.jpg");
    if(QFile::exists(filename))
    {
        ui->inputlineEdit->setText(filename);
    }
}

储存文件:

void MainWindow::on_outputpushButton_pressed()
{
    QString filename=QFileDialog::getSaveFileName(this,"Select Output Image",QDir::currentPath(),"*.jpg;;*.png;;*.bmp");
    if(!filename.isEmpty())
    {
        ui->outputlineEdit->setText(filename);
        using namespace cv;


        Mat inpImg,outImg;
        inpImg=imread(ui->inputlineEdit->text().toStdString());
        if(ui->MedianBlurradioButton->isChecked())
            medianBlur(inpImg,outImg,5);
        else if(ui->GaussianBlurradioButton->isChecked())
            GaussianBlur(inpImg,outImg,Size(5,5),1.25);
        imwrite(filename.toStdString(),outImg);
        if(ui->displaycheckBox->isChecked())
            imshow("Output Image",outImg);
    }
}

2.关闭程序设置

用到头文件:

#include <QCloseEvent>

程序:

void MainWindow::closeEvent(QCloseEvent *event)
{
    int result=QMessageBox::warning(this,"Exit","Are you sure want to close this program?",QMessageBox::Yes,QMessageBox::No);
    if(result==QMessageBox::Yes){
        saveSettings();
        event->accept();
    }
    if(result==QMessageBox::No)
    {
        event->ignore();
    }
}

3.储存和提取配置

用到头文件:

#include <QSettings>
void MainWindow::loadSettings()
{
    QSettings settings("Packt","Hello_Qt_OpenCV",this);
    ui->inputlineEdit->setText(settings.value("inputlineEdit","").toString());
    ui->outputlineEdit->setText(settings.value("outputlineEdit","").toString());
    ui->MedianBlurradioButton->setChecked(settings.value("MedianBlurradioButton",true).toBool());
    ui->GaussianBlurradioButton->setChecked(settings.value("GaussianBlurradioButton",false).toBool());
    ui->displaycheckBox->setChecked(settings.value("displaycheckBox",false).toBool());

}

void MainWindow::saveSettings()
{
     QSettings settings("Packt","Hello_Qt_OpenCV",this);
     settings.setValue("inputlineEdit",ui->inputlineEdit->text());
     settings.setValue("outputlineEdit",ui->outputlineEdit->text());
     settings.setValue("MedianBlurradioButton",ui->MedianBlurradioButton->isChecked());
     settings.setValue("GaussianBlurradioButton",ui->GaussianBlurradioButton->isChecked());
     settings.setValue("displaycheckBox",ui->displaycheckBox->isChecked());
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值