对文件夹test下的图片进行kmeans聚类之后(这里我将k设为7),得到一个txt文件。txt文件中有两列数据,第一列是对应图片属于的类别,第二列是该图片距离质心的距离。如图所示:
现在我新建了0到6七个文件夹,然后将图片按照类别复制到不同文件夹下,详细代码如下:
import numpy as npimport osimport shutil# 读取txt文件并将其转化为arrayf = 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 = 1for 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()函数,将图片从一个文件夹移动到另一个文件夹。第一个参数是旧的文件路径,第二个参数为新的文件路径。