如何垂直连接三个或更多图像?

How to concatenate three or more images vertically?

我尝试垂直连接三个图像,我需要一些有关 code/function 的帮助。到目前为止,我导入了一张图像并裁剪了 3 张相同尺寸的小图像。现在我想将它们连接成一个长而窄的图像。但是,我找不到合适的函数,或者即使找到了一个,当我将它应用到我的代码时也会收到一条错误消息。

我已经试过将我的三张图片做一个合集然后使用函数skimage.io.concatenate_images(sf_collection),但是这样会导致4维图片无法可视化

sf_collection = (img1,img2,img3)
concat_page = skimage.io.concatenate_images(sf_collection)

我的预期输出是将三个图像垂直连接成一个图像(又长又窄)。

我从未使用过 skimage.io.concatenate,但我认为您正在寻找 np.concatenate。它默认为 axis=0,但您可以为水平堆栈指定 axis=1。这还假设您已经将图像从.

加载到它们的数组中
from scipy.misc import face
import numpy as np
import matplotlib.pyplot as plt

face1 = face()
face2 = face()
face3 = face()

merge = np.concatenate((face1,face2,face3))

plt.gray()
plt.imshow(merge)

其中returns:

如果您查看 skimage.io.concatenate_images docs,它也在使用 np.concatenate。该函数似乎提供了一种数据结构来保存图像集合,但不会合并为单个图像。

像这样:

import numpy as np

h, w = 100, 400

yellow = np.zeros((h,w,3),dtype=np.uint8) + np.array([255,255,0],dtype=np.uint8)
red    = np.zeros((h,w,3),dtype=np.uint8) + np.array([255,0,0],dtype=np.uint8)
blue   = np.zeros((h,w,3),dtype=np.uint8) + np.array([0,0,255],dtype=np.uint8)

# Stack vertically
result = np.vstack((yellow,red,blue))

使用以下方式堆叠 side-by-side(水平):

result = np.hstack((yellow,red,blue))