组合多张图片并在Qt中显示
Posted
技术标签:
【中文标题】组合多张图片并在Qt中显示【英文标题】:Combine multiple images and display it in Qt 【发布时间】:2017-07-04 07:13:51 【问题描述】:我是 OpenCV 和 Qt 的初学者,我的项目现在正在组合多个图像并将其显示在 Qt Creator 上。
#include <stdio.h>
#include <iostream>
#include <mutex>
#include <opencv2/opencv.hpp>
using namespace std;
int main(int argc, char** argv)
string img_path = "/home/m/pictures/cat.jpg";
std::vector<cv::Mat> img_pool;
for (int i=0;i<10;i++)
cv::Mat data = cv::imread(img_path,-1);
img_pool.push_back(data);
cv::Mat data = cv::imread(img_path,-1);
cv::namedWindow("image", CV_WINDOW_NORMAL);
cv::imshow("image",data);
cv::waitKey(0);
cv::Mat data_dst = cv::Mat::zeros(500, 500, data.type());
cv::Mat data_resize;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
cv::resize( img_pool[3], data_resize, cv::Size(50,50));
cv::Rect f_target(i*50,j*50,50,50);
data_resize.copyTo(data_dst(f_target));
cv::namedWindow("image_n", CV_WINDOW_NORMAL);
cv::imshow("image_n",data_dst);
cv::waitKey(0);
return 0;
结果如下:
我的代码现在可以显示一个图像,但我想做的是显示不同的多个图像,我想我需要将图像或图像路径加载到矢量但我失败了,所以有人可以帮助我吗?
【问题讨论】:
您的代码中没有使用 Qt。另外 - 你想以什么方式显示多个图像?一次在网格中? 【参考方案1】:您的代码中没有使用 Qt。如果你想用 Qt 做这样的事情,你可以使用一个带有网格布局或流布局的简单小部件。然后从 QImage 数组中的路径加载所有图像并显示它。
您可以在此处找到FlowLayout 的示例。您可以使用 QLabel 来显示图像,将您的 QImage 转换为 QPixmap 并使用:
QImage yourImage("path");
QLabel image new QLabel(centralwidget);
imagelabel->setGeometry(QRect(20, 10, 371, 311));
imagelabel->setPixmap(QPixmap(QPixmap::fromImage(yourImage));
如果您是 Qt 新手,您可以使用 FlowLayout 和 QML 组件数组轻松地将它与 QML 集成。看看这个ImageViewer 的用法示例
【讨论】:
对不起,我使用的是 Qt,但对于这个项目,我只使用 OpenCV 来组合不同的多个图像,然后写入一个位置,然后我创建一个文本标签来显示它。以上是关于组合多张图片并在Qt中显示的主要内容,如果未能解决你的问题,请参考以下文章