无法同时显示五个 Mat 图像(C++、OpenCV)

Posted

技术标签:

【中文标题】无法同时显示五个 Mat 图像(C++、OpenCV)【英文标题】:Can't show five Mat images all at once (C++, OpenCV) 【发布时间】:2014-05-01 18:34:36 【问题描述】:

在下面的代码中,使用了一个方法来输入一个 Mat 图像并输出一个编辑后的 ​​Mat 图像。代码工作正常,虽然我无法同时在屏幕上显示所有五个图像,因为当代码运行时,只显示最后一个输出图像。理想情况下,代码应在同一窗口中显示每个输出图像的更小、按比例缩小的版本。

void method (Mat input)

    ...

    imshow("Output", output);


int main()

    img_1 = imread("img1.jpg");
    img_2 = imread("img2.jpg");
    img_3 = imread("img3.jpg");
    img_4 = imread("img4.jpg");
    img_5 = imread("img5.jpg");

    method(img_1);
    method(img_2);
    method(img_3);
    method(img_4);
    method(img_5);


【问题讨论】:

【参考方案1】:

如果你想要几个 highgui 窗口,每个窗口都需要一个不同的名称:

void method (Mat input, const string & name)

    ...

    imshow(name, output);


 method(img_1, "image 1");
 method(img_2, "image 2");
 method(img_3, "image 3");
 // ...

【讨论】:

谢谢!我尝试使用 resize() 方法缩小 Mat 图像,该方法位于 OpenCV 文档中,但似乎根本不起作用,就像它不是我的 OpenCV 版本(2.4.6)的一部分。 Resize 在您的 OpenCV 版本中肯定也可用。使用它来调整大小,然后通过将图像分配给更大结果图像的不同 ROI 来将图像拼接在一起。

以上是关于无法同时显示五个 Mat 图像(C++、OpenCV)的主要内容,如果未能解决你的问题,请参考以下文章

调整图像类型“Mat”opencv C++的大小

如何在Android模拟器上显示Mat图像?使用NDK

在 C++ 中修改 cv::Mat 数据时出现分段错误

将 MAT 图像复制到 C++ 中的特定地址

Visual C++ Mat 图像元素队列:如何?

在matlab中调用时无法在C++中使用opencv读取图像