Несколько изображений PIL в одном сюжете - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть количество изображений в формате:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=64x64 at 0x7F555F6E3898>

все вместе в списке.Я могу визуализировать каждого по отдельности, но я хочу визуализировать их все вместе, один рядом с другим, пока он не станет слишком длинным, а затем перейти к следующему ряду (например, n / 4 строки с 4 изображениями в каждом ряду).Как только это будет сделано, я хотел бы также сохранить его как jgp.

Я попытался использовать подзаговор из matplotlib, но он говорит, что значения не подлежат изменению.

Мой код:

from os import listdir
from os.path import isfile, join

files = [f for f in listdir(mypath) if isfile(join(mypath, f))]    
files.sort()
files.sort(key = len)
im = []
for jpg in files:
    im.append(Image.open(mypath+'/'+jpg))

for i in im:
    image = np.asarray(i)
    plt.subplot(3,np.floor(len(image)/3),image)
plt.show()

1 Ответ

0 голосов
/ 17 декабря 2018

обновите свое использование для подзаговора, тогда это должно быть хорошо.см. пример кода ниже.

import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np

# get sample data
from sklearn import datasets
x,y=datasets.load_digits(n_class=10, return_X_y=True)
x = x[0:100,:]
x = np.reshape(x,[100,8,8])

# plot
for i in range(x.shape[0]):
    if i >= 9:
        break
    image = x[i,:].squeeze()
    plt.subplot(3,3,i+1)
    plt.imshow(image,cmap='gray',interpolation='none')

enter image description here

альтернативно:

# https://matplotlib.org/mpl_toolkits/axes_grid/users/overview.html
from mpl_toolkits.axes_grid1 import ImageGrid
fig = plt.figure(1,(10,10))
grid = ImageGrid(fig, 111,
                 nrows_ncols=(2,7),
                 axes_pad=0.1,
                 )
for i in range(14):
    image = x[i,:].squeeze()
    grid[i].imshow(image,cmap='gray',interpolation='none')

enter image description here

...