如何使用imshow在多个窗口中显示多个图像?

时间:2013-08-01 07:22:53

标签: c++ opencv

我想做以下的事情,以便在屏幕上显示两个图像:

imshow("1", img1);
imshow('2', 'img2');

有可能吗?

谢谢!

6 个答案:

答案 0 :(得分:10)

是的,有可能。函数void imshow(const string& winname, InputArray mat)在指定的窗口中显示图像,其中 -

  • winname - 窗口名称。
  • image - 要显示的图像。

窗口由其名称标识。所以在两个不同的窗口中显示两个图像(img1,img2);使用imshow使用不同的名称,如: -

imshow("1",img1);
imshow("2",img2);

答案 1 :(得分:4)

以下是如何在Python中执行此操作:

    cv2.namedWindow("Channels")
    cv2.imshow("Channels", image_channels)

    cv2.namedWindow("Main")
    cv2.imshow("Main", image_main)

您只需创建一个命名窗口并将其名称作为字符串传递给imshow。

答案 2 :(得分:4)

I have this working in Python, with a caveat:

cv2.imshow("image 1", my_image_1)
cv2.imshow("image 2", my_image_2)
cv2.waitKey(0)

The caveat is that both windows are in the exact same spot on the screen, so it only looks like one window opened up (Ubuntu 14.4). I can mouse drag one to the side of the other.

I'm now looking for how to place the two side by side automagically, which is how I found this question..

答案 3 :(得分:1)

我遇到了必须创建任意数量的openCV窗口的问题。我把它们存储在一个列表中,无法简单地遍历它以显示它们:

# images is a list of openCV image object

for img in images:
    cv2.imshow('image',i)

由于图像需要不同标签的琐碎原因,这不起作用,因此此循环将仅显示列表中的最后一项。

可以通过使用迭代器和python字符串格式化程序来解决:

for i, img in enumerator(images):
    cv2.imshow("Image number {}".format(i), img)

因此,由于已为其分配了不同的标签,因此现在将显示所有图像。

答案 4 :(得分:0)

如果你的图像是numpy数组,你可以使用numpy.hstack函数将两个数组合并为一个数组,并使用cv2.imshow()来显示数组。

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.hstack.html

答案 5 :(得分:-2)

import cv2
import numpy as np

towImage = np.vstack((row_0, row_1))
cv2.imwrite('img', towImage)

我创建了一个模块以使模块更易于显示

https://github.com/saman202/View_image_video_matrix

smp = ShowMatrixPic(width=180, height=240, row=3, column=4, atuoTile=True)
  

imgListOne = ['pic/Scott Glenn.jpg','pic/Brad Pitt.jpg',
              'pic/Scott Glenn.jpg','pic/Brad Pitt.jpg',
              'pic/Scott Glenn.jpg','pic/Brad Pitt.jpg',
              'pic/Scott Glenn.jpg','pic/Brad Pitt.jpg',
              'pic/Scott Glenn.jpg','pic/Brad Pitt.jpg'
              ]
numpy_horizontal = smp.showPic(imgListOne)
cv2.imshow('img', numpy_horizontal)
cv2.waitKey(0)
     

https://i.stack.imgur.com/5E3b5.png