將圖片數據按照標籤存儲至文件夾

首先,介紹一下要被分類存儲的數據集格式

Base文件夾中的圖片有兩個標籤,代表兩個指標,圖片存儲在Base文件夾中,指標一和二的標籤都在Annotation_Base.xls中,list.txt存放的是圖片的路徑和該圖片對應的指標一;list1.txt存放的是圖片的路徑和該圖片對應的指標二
在這裏插入圖片描述
分好的圖片數據集格式長這個樣子
在這裏插入圖片描述
在這裏插入圖片描述

import numpy as np
import os
import shutil
#****************將圖片數據按照標籤存儲至文件夾***************
root='E:/Python/project/DIY/MESSIDOR/Risk of macular edema'  #不同指標需要建立不同的存儲文件夾
#創建文件夾
for i in range(4):
    os.mkdir(root+'/'+str(i))
# 讀取txt文件並將其轉化爲array
f = open(r"E:/Python/project/DIY/MESSIDOR/all/list1.txt")   #.txt文件地址 若按照指標一分就list,若按照指標二分就list1
line = f.readline()
data_list = []
while line:
    num = list(map(str, line.split(' ')))
    data_list.append(num)
    line = f.readline()
f.close()
data_array = np.array(data_list)
# print(data_array[:,0])

# 讀取每張圖片按照其分類複製到相應的文件夾中
imgs = os.listdir('E:/Python/project/DIY/MESSIDOR/all/Base')   #所有圖片所在的位置
imgnum = len(imgs)  # 文件夾中圖片的數量
j=0
for i in range(imgnum):  # 遍歷每張圖片
    # print(int(data_array[i][0]))
    label=int(data_array[i][1])    #圖片對應的類別
    route=str(data_array[i][0])
    shutil.move(str(route), root+'/'+str(label)+'/'+str(j)+'.tif')  #圖片的命名格式爲j.tif,若不加也行
    # shutil.move(str(route), root+'/'+str(label)
    j=j+1
#shutil.move()函數,將圖片從一個文件夾移動到另一個文件夾。第一個參數是舊的文件路徑,第二個參數爲新的文件路徑。


引用一下這個博主的文章簡單的介紹一下shutil.move()函數

#移動文件(目錄)
shutil.move("oldpos","newpos") 

https://blog.csdn.net/seanblog/article/details/78885423?ops_request_misc=&request_id=&biz_id=102&utm_term=shutil.move&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-78885423

英文大家應該都不太樂意看,我就百度翻過來,順便介紹一下我的踩坑歷程吧
遞歸地將文件或目錄移動到另一個位置。這是類似於Unix“mv”命令。返回文件或目錄的目的地。
如果目標是目錄或指向目錄的符號鏈接,則源在目錄中移動。目標路徑不能已經存在。
如果目標已存在但不是目錄,則可能是根據os.rename()語義覆蓋。
*如果目標位於當前文件系統上,則使用rename()。否則,src將被複制到目的地,然後被刪除。*符號鏈接是如果os.rename()由於交叉操作而失敗,則使用新名稱重新創建文件系統重命名。
可選的“copy_function”參數是一個將要使用的可調用參數複製源,否則將委託給“copytree”。默認情況下,使用copy2(),但任何支持可以使用簽名(如copy())。
在這裏還有很多事情要做。。。看一看mv.c顯示很多這個實現掩蓋了一些問題。
這個newpos的命名有講究,說白了就是移動過來的圖片不能有重複名字的文件,如果有就刪點而且報這樣的錯
在這裏插入圖片描述
如果想分割一下試試看或者需要MESSIDOR數據集的話,傳送門在這兒:
https://download.csdn.net/download/weixin_40258368/12400086

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章