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

18

我想做类似于以下的事情,以便在屏幕上显示两张图片:

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

能做到吗?


许多重复项可用! - Khashayar
6个回答

16

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

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

窗口由其名称标识。因此,要在两个不同的窗口中显示两张图像(img1,img2),请使用不同的名称调用imshow,例如:

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

1
你知道在Python中使用cv2绑定是否可能实现这个吗?当我连续调用imshow时,它会导致进程崩溃。 - Jesse
1
是的,我想知道Python的等效代码。连续两次调用cv2.imshow不会弹出两个窗口。 - aquagremlin

7

我已经在Python中实现了这个功能,但有一个注意事项:

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

需要注意的是,这两个窗口在屏幕上的位置完全相同,所以它只看起来像是打开了一个窗口(Ubuntu 14.4)。 我可以鼠标拖动其中一个到另一个旁边。

现在我正在寻找如何自动地将这两个窗口并排放置,这就是我发现这个问题的原因。。


8
你可以像这样移动窗口:cv2.moveWindow("image 2", 0, 0)。 - Joseph Sheedy

5

以下是用Python的方法:

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

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

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


我正在使用jupyter,但cv2.imshow()没有显示任何内容,而plt.imshow()却可以。有什么想法吗? - SeanJ

5

我遇到了一个问题,需要创建任意数量的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)


因此,现在所有的图片都将被显示,因为它们已经被分配了不同的标签。

你的意思是 enumerate(在第二个代码片段中)。 - CristiFati

0

-2
import cv2
import numpy as np

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

我创建了一个模块,使得展示模块变得更加容易。

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://istack.dev59.com/5E3b5.webp


这个使用一个窗口还是多个窗口? - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接