主要实现的界面:

对于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());
}

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

被折叠的 条评论
为什么被折叠?



