diff --git a/src/ui/cvimageviewer.cpp b/src/ui/cvimageviewer.cpp index 0881372..c3115c0 100644 --- a/src/ui/cvimageviewer.cpp +++ b/src/ui/cvimageviewer.cpp @@ -26,6 +26,7 @@ CvImageViewer::CvImageViewer(QWidget *parent, size_t lastId) : QWidget(parent), lastId_(lastId), saveAction_("Save Image", nullptr), + exportAction_("Export Image as PNG", nullptr), zoomAction_("Zoom to selection", nullptr), resetAction_("Reset Zoom", nullptr), statisticsAction_("Get selection properties", nullptr), @@ -36,6 +37,7 @@ CvImageViewer::CvImageViewer(QWidget *parent, size_t lastId) : qimage_.load(":/images/noimage.png"); connect(&saveAction_, &QAction::triggered, this, &CvImageViewer::saveImage); + connect(&exportAction_, &QAction::triggered, this, &CvImageViewer::exportImage); connect(&zoomAction_, &QAction::triggered, this, &CvImageViewer::zoomToSelection); connect(&resetAction_, &QAction::triggered, this, &CvImageViewer::resetZoom); connect(&statisticsAction_, &QAction::triggered, this, &CvImageViewer::showSatDiag); @@ -43,6 +45,7 @@ CvImageViewer::CvImageViewer(QWidget *parent, size_t lastId) : connect(&yPlotAction_, &QAction::triggered, this, &CvImageViewer::plotOnY); imageContextMenu_.addAction(&saveAction_); + imageContextMenu_.addAction(&exportAction_); imageContextMenu_.addAction(&zoomAction_); imageContextMenu_.addAction(&resetAction_); imageContextMenu_.addAction(&statisticsAction_); @@ -63,32 +66,31 @@ CvImageViewer::~CvImageViewer() void CvImageViewer::saveImage() { - QString fileName; - if(origImage_.type() == CV_8UC3 || origImage_.type() == CV_8SC3 || origImage_.type() == CV_8UC1 || origImage_.type() == CV_8SC1) - { - fileName = QFileDialog::getSaveFileName(this, "Save Image", lastSavePath_, "*.mat *.png" ); - } - else - { - fileName = QFileDialog::getSaveFileName(this, "Save Image", lastSavePath_, "*.mat" ); - } + QString fileName = QFileDialog::getSaveFileName(this, "Save Image", lastSavePath_, "*.mat" ); if(!fileName.isEmpty()) { lastSavePath_= fileName.mid(0, fileName.lastIndexOf('/')); QStringList tokens = fileName.split('.'); - if(tokens.back() != "mat" && tokens.back() != "png") + if(tokens.back() != "mat") fileName.append(".mat"); - tokens = fileName.split('.'); - if(tokens.back() == "png") - { - imwrite(fileName.toStdString(), origImage_); - } - else - { - cv::FileStorage matf(fileName.toStdString(), cv::FileStorage::WRITE); - matf<<"image"<