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

时间:2019-06-26 16:26:10

标签: python jupyter-notebook image-manipulation scikit-image

我尝试垂直连接三个图像,并且在代码/功能方面需要一些帮助。到目前为止,我导入了一张图像并裁剪了3张相同大小的较小图像。现在,我想将它们串联在一个长而窄的图像中。但是,我找不到合适的函数,即使找到一个合适的函数,当我将其应用于代码时也会收到错误消息。

我已经尝试从三张图片中收集图片,然后使用skimage.io.concatenate_images(sf_collection)函数,但这会导致无法显示4维图片。

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

我的预期输出是将三幅图像垂直合并为一张图像(很长很窄)。

2 个答案:

答案 0 :(得分:1)

我从未使用过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)

返回: enter image description here

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

答案 1 :(得分:1)

赞:

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))

enter image description here

使用以下内容并排(水平)堆叠:

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