给我一段完整的代码,利用VS+opencv+QT完成可以打开不同类型的图片,并保存图片,不能打开的图片弹出提示窗口
时间: 2023-11-27 21:52:26 浏览: 150
qt和opencv的显示图片的代码。啥都有。
3星 · 编辑精心推荐
这是一个基于Qt5和OpenCV的简单的图像浏览器和保存器。它支持打开和显示多种图像格式,包括BMP、PNG、JPEG、GIF和TIFF。如果无法打开图像,则会弹出一个错误对话框。用户可以选择保存图像到另一个文件。
在使用此代码之前,请确保已经正确安装了Qt5和OpenCV,并将其设置为项目中的库和头文件路径。
mainwindow.h
```c++
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QMessageBox>
#include <opencv2/opencv.hpp>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_openButton_clicked();
void on_saveButton_clicked();
private:
Ui::MainWindow *ui;
cv::Mat image;
};
#endif // MAINWINDOW_H
```
mainwindow.cpp
```c++
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_openButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), "", tr("Image Files (*.bmp *.png *.jpg *.jpeg *.gif *.tif)"));
if(fileName.isEmpty()){
return;
}
image = cv::imread(fileName.toStdString());
if(image.empty()){
QMessageBox::critical(this, tr("Error"), tr("Could not open image file"));
return;
}
cv::cvtColor(image, image, cv::COLOR_BGR2RGB);
QImage img((uchar*)image.data, image.cols, image.rows, image.step, QImage::Format_RGB888);
ui->imageLabel->setPixmap(QPixmap::fromImage(img));
ui->imageLabel->resize(ui->imageLabel->pixmap()->size());
}
void MainWindow::on_saveButton_clicked()
{
if(image.empty()){
return;
}
QString fileName = QFileDialog::getSaveFileName(this, tr("Save Image"), "", tr("Image Files (*.bmp *.png *.jpg *.jpeg *.gif *.tif)"));
if(fileName.isEmpty()){
return;
}
cv::imwrite(fileName.toStdString(), image);
}
```
main.cpp
```c++
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
```
阅读全文