将cv::mat类型的图片输出两张图在QGraphicsView中
时间: 2024-03-17 08:41:20 浏览: 93
cv::mat 和 QImage 互转
要在 `QGraphicsView` 中显示 `cv::Mat` 类型的图片,您需要将 `cv::Mat` 转换为 `QPixmap`,然后将 `QPixmap` 添加到 `QGraphicsScene` 中。以下是一个简单的例子,它演示了如何将一张 `cv::Mat` 类型的图片输出两张图并在 `QGraphicsView` 中显示:
```c++
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QPixmap>
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 加载图片
cv::Mat image = cv::imread("test.jpg");
// 将图片转换为 QPixmap
QPixmap pixmap = QPixmap::fromImage(QImage(image.data, image.cols, image.rows, QImage::Format_RGB888));
// 创建 QGraphicsScene 和 QGraphicsView
QGraphicsScene scene;
QGraphicsView view(&scene);
// 添加第一张图片
QGraphicsPixmapItem item1(pixmap);
scene.addItem(&item1);
// 添加第二张图片
QGraphicsPixmapItem item2(pixmap);
item2.setScale(0.5);
item2.setPos(QPointF(pixmap.width(), 0));
scene.addItem(&item2);
// 调整视图大小并显示
view.setSceneRect(scene.itemsBoundingRect());
view.fitInView(scene.sceneRect(), Qt::KeepAspectRatio);
view.show();
return a.exec();
}
```
这段代码首先加载一张图片,然后将其转换为 `QPixmap`。接着,它创建了一个 `QGraphicsScene` 和一个 `QGraphicsView`,并向场景中添加了两个 `QGraphicsPixmapItem`,一个使用默认比例,另一个缩小了一半。最后,调整了视图大小并将其显示出来。
阅读全文