将两张cv::mat类型的图片输出在两张QGraphicsView中
时间: 2023-08-26 18:31:46 浏览: 136
要将两张 `cv::Mat` 类型的图片输出在两张 `QGraphicsView` 中,您可以根据上面的示例创建两个 `QGraphicsScene` 和两个 `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 image1 = cv::imread("test1.jpg");
cv::Mat image2 = cv::imread("test2.jpg");
// 将图片转换为 QPixmap
QPixmap pixmap1 = QPixmap::fromImage(QImage(image1.data, image1.cols, image1.rows, QImage::Format_RGB888));
QPixmap pixmap2 = QPixmap::fromImage(QImage(image2.data, image2.cols, image2.rows, QImage::Format_RGB888));
// 创建 QGraphicsScene 和 QGraphicsView
QGraphicsScene scene1, scene2;
QGraphicsView view1(&scene1), view2(&scene2);
// 添加第一张图片
QGraphicsPixmapItem item1(pixmap1);
scene1.addItem(&item1);
// 添加第二张图片
QGraphicsPixmapItem item2(pixmap2);
scene2.addItem(&item2);
// 调整视图大小并显示
view1.setSceneRect(scene1.itemsBoundingRect());
view1.fitInView(scene1.sceneRect(), Qt::KeepAspectRatio);
view1.show();
view2.setSceneRect(scene2.itemsBoundingRect());
view2.fitInView(scene2.sceneRect(), Qt::KeepAspectRatio);
view2.move(view1.width(), 0);
view2.show();
return a.exec();
}
```
这段代码首先加载两张图片,然后将它们转换为 `QPixmap`。接着,它创建了两个 `QGraphicsScene` 和两个 `QGraphicsView`,并向每个场景中添加了一张 `QGraphicsPixmapItem`。最后,调整了视图大小并将其显示出来。其中,第二个视图的位置设置为第一个视图的宽度,这样它们就可以并排显示了。
阅读全文