python v 3.7.3
matplotlib 3.1.1
, работающий на Google colab
У меня есть набор данных, содержащий 101 папку и около 750 изображений в папке. Я хотел бы случайным образом отобразить 16 из этих изображений из любой данной папки. Изображения организованы следующим образом:
Каталог поездов
- folder1
- ---> image1
- ---> image2
- ---> imagen
- folder2
- ---> image1
- ---> image2
и т. Д.
Я попытался создать код, который перебирает каждую папку и выбирает случайное изображение 16 раз ИТОГО (не для каждой папки).
Вот мой код, таким образом far:
import random
from PIL import Image
for folder in os.listdir(train_folder):
for image in os.listdir(train_folder + '/' + folder):
img = os.path.join(train_folder, folder, image)
#print(img)
plt.figure(1, figsize=(15, 9))
plt.axis('off')
n = 0
for i in range(16):
n += 1
random_img = random.choice(img)
imgs = imread(random_img)
plt.subplot(4, 4, n)
axis('off')
plt.imshow(imgs)
plt.show()
Вот ошибка:
FileNotFoundError Traceback (most recent call last)
<ipython-input-19-2f47ab853e7c> in <module>()
13 n += 1
14 random_img = random.choice(img)
---> 15 imgs = imread(random_img)
16 plt.subplot(4, 4, n)
17 #plt.subplots_adjust(hspace = 0.5, wspace = 0.5)
1 frames
/usr/local/lib/python3.6/dist-packages/PIL/Image.py in open(fp, mode)
2764
2765 if filename:
-> 2766 fp = builtins.open(filename, "rb")
2767 exclusive_fp = True
2768
FileNotFoundError: [Errno 2] No such file or directory: '6'
Я не уверен, где представить аргумент для случайного выбора одного из изображений. Я также думаю, что структура, которую я использую, может быть не самой эффективной, поскольку может потребоваться несколько итераций по папкам. Было бы неплохо просто go просмотреть папки один раз и выбрать 16 изображений. Есть ли эффективный способ сделать это в python? Я пока не знаю его ограничений.