如何将所有图像从不同的12个文件夹复制到单个文件夹?

问题描述

我正在使用image dataset。它具有12 different folders12 different classes。因此,我想在reserve all images的{​​{1}}中a single directory。我正在为其编写代码,但它仅复制了总计all_im。但是我的主文件夹包含808 images。我如何more than 5000 imagescopymain 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

解决方法

您必须重命名图像。您可以在最后一个循环中添加一个计数器,然后使用该计数器命名图像。

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])