对文件夹test下的图片进行kmeans聚类之后(这里我将k设为7),得到一个txt文件。txt文件中有两列数据,第一列是对应图片属于的类别,第二列是该图片距离质心的距离。如图所示:
现在我新建了0到6七个文件夹,然后将图片按照类别复制到不同文件夹下,详细代码如下:
import numpy as np
import os
import shutil
# 读取txt文件并将其转化为array
f = open(r"./result.txt")
line = f.readline()
data_list = []
while line:
num = list(map(float, line.split(',')))
data_list.append(num)
line = f.readline()
f.close()
data_array = np.array(data_list)
# print(data_array[:,0])
# 读取每张图片按照其分类复制到相应的文件夹中
imgs = os.listdir('./test')
imgnum = len(imgs) # 文件夹中图片的数量
j = 1
for i in range(imgnum): # 遍历每张图片
# print(int(data_array[i][0]))
label=int(data_array[i][0]) #图片对应的类别
shutil.move('./test/'+str(j)+'.jpg', './'+str(label)+'/'+str(j)+'.jpg')
j+=1
这里用到了shutil.move()函数,将图片从一个文件夹移动到另一个文件夹。第一个参数是旧的文件路径,第二个参数为新的文件路径。