Есть ли способ сортировки изображений в папки с помощью меток? - PullRequest
0 голосов
/ 05 ноября 2019

Попытка сортировать мои неконтролируемые изображения в папки на основе выводимой метки. Я начинаю с каталога изображений .jpg, изменяю их размер в новый каталог, затем делаю каждое изображение в виде одного массива, объединенного в 1 .csv. .Csv считывается обратно как pandas dataframe и применяет KMeans, чтобы увидеть, есть ли у меня какая-либо кластеризация. Я пытался создать папки назначения, где, если папка не существует, она будет создана. Сначала я подумал написать оператор if-else, но понял, что когда я попаду в оператор if, метки уже находятся в массиве, я подумал, что смогу связать имя файла с меткой, как оно было сгенерировано, но не смогработай. Я также понял, что имя файла больше не связано с массивом изображений после того, как оно было преобразовано в .csv.

MY_DIRECTORY = "\\test\\"
OUT_DIRECTORY = "\\testresize\\"

for filename in glob.glob(MY_DIRECTORY+"*.jpg"):
    # select the desired resolution
    size = 200, 200
    file_parts = os.path.splitext(filename)
    outfile = file_parts[0] + '_200x200' + file_parts[1]
    outfile = os.path.basename(outfile)
    print(outfile)
    img = Image.open(filename)
    img = img.resize(size, Image.ANTIALIAS)
    img.save(OUT_DIRECTORY + outfile, 'jpeg')



for img in os.listdir(OUT_DIRECTORY):
    img_array = cv2.imread(os.path.join(OUT_DIRECTORY,img), cv2.IMREAD_GRAYSCALE)
    img_array = (img_array.flatten())
    img_array = img_array.reshape(-1, 1).T
    img_array = img_array/255.0
    print(img_array)
open('\\test.csv', 'ab') as f:
        np.savetxt(f, img_array, delimiter = ',')

dest_fold_0 = '\\Sorted\\Label_0'
dest_fold_1 = '\\Sorted\\Label_1'
dest_fold_2 = '\\Sorted\\Label_2'



combined_array = pd.read_csv('\\test.csv', header = None, low_memory = False, error_bad_lines = False)

model = KMeans(algorithm = 'auto', copy_x = True, init = 'k-means++', max_iter = 300,
                n_clusters = 2, n_init = 10, n_jobs = 1, precompute_distances = 'auto',
                random_state = 1, tol = 0.0001, verbose = 0)
model.fit(combined_array)
labels = model.predict(combined_array)

if labels == 0:
    if not os.path.exists(dest_fold_0):
        os.mkdir(dest_fold_0)
    img.save(dest_fold_0 + outfile, 'jpeg')

elif labels == 1:
    if not os.path.exists(dest_fold_1):
        os.mkdir(dest_fold_1)
    img.save(dest_fold_1 + outfile, 'jpeg')

elif labels == 2:
    if not os.path.exists(dest_fold_2):
        os.mkdir(dest_fold_2)
    img.save(dest_fold_2 + outfile, 'jpeg')
else:
    pass

print(labels)
print(model.inertia_)    pd.DataFrame(labels).to_csv("C:\\Users\\rzara\\Desktop\\ProcessofUnsupervisedLearning\\labels.csv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...