如何在python中使用for循环垂直连接1000张图像?

Eda*_*diz 6 python concat image concatenation scikit-image

我想垂直连接很多图像。我曾经skimage读取图像然后在每次迭代中io读取图像并将vconcat新图像垂直连接到旧图像上。我的代码的结果没有连接图像,只是组合图像。如何使每次迭代中的每个图像相互垂直连接的任何想法。

我想垂直连接第一个图像和第二个图像

拳头形象

第二张图片

但我得到了这个结果

结果

在此处输入图片说明

任何帮助,将不胜感激。

data=[]
if nSpectogram <3765:
            for k in range (0,21):
                path=io.imread('E:\\wavelet\\spectrograms\\paz05\\'+'spec_'+isPreictal+'_'+str(nSpectogram+1)+'_'+str(k+1)+'.png')
                im_v_array=np.array(im_v)
                data.append(path)
            res=np.concatenate(data)
            plt.imshow(res,cmap='inferno', aspect='auto', interpolation='nearest')

Run Code Online (Sandbox Code Playgroud)

Viv*_*gan 5

用 -

merged_img = []
for i in range(3):
    img = io.imread('https://machinelearningblogs.com/wp-content/uploads/2018/03/849825_XL-830x400.jpg')
    merged_img.append(img)

merge = np.concatenate(merged_img)

plt.imshow(merge)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

刚才的所有图像添加到listfor循环阅读这些条款后,并通过列表中np.concatenate


Par*_*ait 2

而不是skimage.io(这可能是由于版本或 CPU 问题),请考虑使用matplotlib.pyplot.imread列表理解或map. 下面用OP的两张图片来演示。

import numpy as np
import matplotlib.pyplot as plt

img_paths = ["OP_Image_1.png", "OP_Image_2.png"]

data = [plt.imread(img) for img in img_paths]
# data = list(map(mpimg.imread, img_paths))

res = np.concatenate(data)
plt.imshow(res, cmap='inferno', aspect='auto', interpolation='nearest')

plt.axis('off')
plt.show()
Run Code Online (Sandbox Code Playgroud)

绘图输出


具体来说,对于 OP 的文件迭代:

import os
import numpy as np
import matplotlib.pyplot as plt

...
spec_path = r"E:\wavelet\spectrograms\paz05"                     # RAW STRING FOR BACKSLASHES
spec_file = f"spec_{isPreictal}_{str(nSpectogram+1)}_{{}}.png"   # F STRING FOR INTERPOLATION

if nSpectogram <3765:
   data = [plt.imread(os.path.join(spec_path, spec_file.format(k+1))) for k in range(21)]

   res = np.concatenate(data)
   plt.imshow(res, cmap='inferno', aspect='auto', interpolation='nearest')
   
   plt.axis('off')
   plt.savefig(os.path.join(spec_path, "Output.png"))
Run Code Online (Sandbox Code Playgroud)