组合多张图片并在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中显示的主要内容,如果未能解决你的问题,请参考以下文章

matlab如何用循环体导入多张图片并在一个窗口显示(程序改进)!!!急急急!!!

gif动态图片生成器,多张图片组合后生成动图...

Qt圆角功能和状态组合按钮,可以显示颜色或者图片

Qt QListWidget实现图片缩略图列表

带删除和预览的多张图片上传 Laravel

(android )怎么在一个ImageView中显示多张图片,并可设置图片的位置?谢谢!