#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir>
#include <QFileDialog>
#include <QLabel>
#include <QPen>
#include <QPainter>
#include <opencv2/opencv.hpp>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
QImage MainWindow::MatToImage(cv::Mat &m)
{
switch(m.type())
{
case CV_8UC1:
{
QImage img((uchar* )m.data, m.cols, m.rows, m.cols*1, QImage::Format_Grayscale8);
return img;
break;
}
case CV_8UC3:
{
QImage img((uchar* )m.data, m.cols, m.rows, m.cols*3, QImage::Format_RGB888);
return img.rgbSwapped();
break;
}
case CV_8UC4:
{
QImage img((uchar* )m.data, m.cols, m.rows, m.cols*4, QImage::Format_ARGB32);
return img;
break;
}
default:
{
QImage img;
return img;
}
}
}
void MainWindow::on_imagePushButton_clicked()
{
imagePath = QFileDialog::getOpenFileName(nullptr, "选择图片", QDir::homePath(),
"Images (*.png *.xpm *.jpg)");
}
void MainWindow::paintEvent(QPaintEvent *event)
{
cv::Mat img = cv::imread(imagePath.toStdString());
QImage qimg = MatToImage(img);
QPainter painter(ui->viewlabel->setPixmap(QPixmap::fromImage(qimg)));
painter.setPen(QPen(Qt::red,2));
painter.drawRect(QRect(100,100,100,100));
// QPixmap pix = QPixmap::fromImage(qimg);
// pic->setPixmap(pix);
// ui->ViewImageScrollArea->setWidget(pic);
}
版权声明:本文为qq_44798484原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。