allow saveing main viewer image as png

This commit is contained in:
2021-07-26 10:29:13 +02:00
parent 6354b0379d
commit 5b07c96ce7

View File

@ -20,6 +20,8 @@
#include <QMessageBox> #include <QMessageBox>
#include <uvosled.h> #include <uvosled.h>
#include <QFileDialog> #include <QFileDialog>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>
#include "../profile.h" #include "../profile.h"
@ -86,33 +88,47 @@ void MainWindow::saveImage()
void MainWindow::openImage() void MainWindow::openImage()
{ {
QString fileName = QFileDialog::getOpenFileName(this, "Open Image", lastSavedPath_, "*.mat"); QString fileName = QFileDialog::getOpenFileName(this, "Open Image", lastSavedPath_, "*.mat *.png");
if(!fileName.isEmpty()) if(!fileName.isEmpty())
{ {
cv::Mat image; cv::Mat image;
cv::FileStorage matf(fileName.toStdString(), cv::FileStorage::READ); QStringList tokens = fileName.split('.');
try if(tokens.back() == "png")
{ {
matf["image"]>>image; image = cv::imread(fileName.toStdString());
if(image.data && image.channels() == 3)
cv::cvtColor(image, image, cv::COLOR_BGR2GRAY);
image.convertTo(image, CV_32FC1, 1.0/255.0, 0);
} }
catch(const cv::Exception& ex) else
{ {
qDebug()<<ex.what(); cv::FileStorage matf(fileName.toStdString(), cv::FileStorage::READ);
QMessageBox::warning(this, "Invalid file", "File selected dose not contain a valid image"); try
return; {
} matf["image"]>>image;
}
catch(const cv::Exception& ex)
{
qDebug()<<ex.what();
QMessageBox::warning(this, "Invalid file", "File selected dose not contain a valid image");
return;
}
if(matf.isOpened() && (!image.data || image.type() != CV_32FC1)) if(matf.isOpened() && (!image.data || image.type() != CV_32FC1))
{ {
image.release(); image.release();
QMessageBox::warning(this, "Invalid file", "File selected dose not contain a valid image"); QMessageBox::warning(this, "Invalid file", "File selected dose not contain a valid image");
}
matf.release();
} }
else if(!image.data) if(!image.data)
{ {
QMessageBox::warning(this, "Can no open", "Can not open file selected"); QMessageBox::warning(this, "Can no open", "Can not open file selected");
} }
matf.release(); else
ui->mainViewer->setImage(Camera::Image(image, 0)); {
ui->mainViewer->setImage(Camera::Image(image, 0));
}
} }
} }