我尝试垂直连接三个图像,并且在代码/功能方面需要一些帮助。到目前为止,我导入了一张图像并裁剪了3张相同大小的较小图像。现在,我想将它们串联在一个长而窄的图像中。但是,我找不到合适的函数,即使找到一个合适的函数,当我将其应用于代码时也会收到错误消息。
我已经尝试从三张图片中收集图片,然后使用skimage.io.concatenate_images(sf_collection)函数,但这会导致无法显示4维图片。
sf_collection = (img1,img2,img3)
concat_page = skimage.io.concatenate_images(sf_collection)
我的预期输出是将三幅图像垂直合并为一张图像(很长很窄)。
答案 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)
如果您查看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))
使用以下内容并排(水平)堆叠:
result = np.hstack((yellow,red,blue))