#python #python-3.x #image #glob #shutil
#python #python-3.x #изображение #глоб #shutil
Вопрос:
Я работаю с image dataset
. Он имеет 12 different folders
with 12 different classes
. По этой причине я хочу, чтобы reserve all images
a single directory
это было all_im
. Я пишу на нем код, но он копирует только общее количество 808 images
. Но моя основная папка содержит more than 5000 images
. Как я могу copy
все изображения из main folder
в new folder
в Google-Colab
?
Мой полный код:
from numpy.random import seed
seed(101)
from tensorflow import set_random_seed
set_random_seed(101)
import pandas as pd
import numpy as np
import tensorflow
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Conv2D, MaxPooling2D, Flatten
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import categorical_crossentropy
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Model
from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau, ModelCheckpoint
import os
import cv2
import imageio
import skimage
import skimage.io
import skimage.transform
from sklearn.utils import shuffle
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
import itertools
import shutil
import matplotlib.pyplot as plt
%matplotlib inline
SAMPLE_SIZE = 250
# The images will all be resized to this size.
IMAGE_SIZE = 96
os.listdir('content/image_dataset')
folder_list = os.listdir('/content/image_dataset')
all_im_dir = 'all_im'
os.mkdir(all_im)
destination_path = "/content/all_images"
pattern = "/content/Weeds_dataset/*/*"
for img in glob.glob(pattern):
shutil.copy(img, destination_path)
Функция печати: len(os.listdir('all_images'))
Вывод: 808 images
Ожидание: основная папка содержит 5300 pictures
, но я могу только копировать 808 Images
.
Комментарии:
1. Вы уверены, что все файлы имеют уникальные имена в подкаталогах? Здесь вы эффективно сглаживаете любую иерархию.
2. Откуда берется вывод? Я не вижу никакой функции печати.
3. Уважаемый наставник, в каждой папке файлы имеют одинаковый номер, т.Е. от 1 до 800 или от 1 до 1000. Вот так. Это означает, что все файлы в каждой папке имеют одинаковый номер
4. Вам нужно переименовать изображения. Вы можете добавить счетчик в последний цикл и использовать счетчик для присвоения имен изображениям.
5.
counter = 1
,counter = 1
иshutil.copy(img, destination_path '/' str(counter))
Ответ №1:
Вам нужно переименовать изображения. Вы можете добавить счетчик в последний цикл и использовать счетчик для присвоения имен изображениям.
from numpy.random import seed
seed(101)
from tensorflow import set_random_seed
set_random_seed(101)
import pandas as pd
import numpy as np
import tensorflow
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Conv2D, MaxPooling2D, Flatten
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import categorical_crossentropy
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Model
from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau, ModelCheckpoint
import os
import cv2
import imageio
import skimage
import skimage.io
import skimage.transform
from sklearn.utils import shuffle
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
import itertools
import shutil
import matplotlib.pyplot as plt
%matplotlib inline
SAMPLE_SIZE = 250
# The images will all be resized to this size.
IMAGE_SIZE = 96
os.listdir('content/image_dataset')
folder_list = os.listdir('/content/image_dataset')
all_im_dir = 'all_im'
os.mkdir(all_im)
destination_path = "/content/all_images/"
pattern = "/content/image_dataset/*/*"
counter = 0
for img in glob.glob(pattern):
counter = 1
shutil.copy(img, destination_path str(counter) img.split('.')[-1])