我想做以下的事情,以便在屏幕上显示两个图像:
imshow("1", img1);
imshow('2', 'img2');
有可能吗?
谢谢!
答案 0 :(得分:10)
是的,有可能。函数void imshow(const string& winname, InputArray mat)
在指定的窗口中显示图像,其中 -
窗口由其名称标识。所以在两个不同的窗口中显示两个图像(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)