Matlab 中的movefile函式使用小記
阿新 • • 發佈:2018-11-01
因為最近使用labelImg軟體標註訓練圖片,如果圖片有目標區域就標註,沒有當然就不用就標註了,標註檔案儲存在當前圖片資料夾下,這樣當標註完一批圖片後你將看到,好多圖片和圖片對應的標註檔案(.xml格式),還有沒有標註的圖片:
那麼問題來了:如何從這些檔案中取出標註的檔案圖片(標註檔案很好取,可以用.xml字尾名使用檔案過濾器來篩選)?手動選取?如果這有十幾張圖片還勉強可行,多了眼睛都花了,我要達到的目的是從這些檔案中取出標註的圖片,而我們知道只用標註過的圖片含有標註檔案,而他們的檔名是相同,這是有規律的,有規律的事最適合程式來幹了,基於這樣的情況,還是寫個小程式便捷,得了下面就用Matlab寫了個程式。
Matlab中有個函式 movefile就是完成這個事情的主要函式,大致簡介一點:
算了我還是直接貼上help文件吧,簡介明瞭,只做個別註解。
movefile('source')
movefile('source','destination')#把source 移動destination
movefile('source','destination','f
')#強行把source 移動destination,即使source只有只讀屬性
[status,message,messageid] = movefile(___)
好了現在就上完整程式碼:
%2018/09/05 by DQ clc; clear; close all; OriginalFolderName='temp'; AnotFolder='C:\Users\Administrator\Desktop\windows_v1.6.0\ImageSet\NewAppendIm'; %建立一個資料夾用於放置含有標註的圖片和標註檔案 ValidAnotName=strcat('Valid',OriginalFolderName); ValidAnotFolder=fullfile(AnotFolder,ValidAnotName); if ~exist(ValidAnotFolder,'dir') mkdir(ValidAnotFolder); end %選出含有標註的檔案和圖片 AnotFileSet=dir(strcat(AnotFolder,'\*.xml')); AnotFileNum=length(AnotFileSet); for i=1:AnotFileNum AnotFileName=AnotFileSet(i).name; AnotFilePath=fullfile(AnotFolder,AnotFileName); ImFileName=strcat(AnotFileName(1:end-4),'.jpg'); ImFilePath=fullfile(AnotFolder,ImFileName); movefile(AnotFilePath,ValidAnotFolder);%標註檔案移動到指定的資料夾下 movefile(ImFilePath,ValidAnotFolder);%標註圖片移動到指定的資料夾下 end %建立一個資料夾用於放置未標註圖片 InvalidFolderName=strcat('Invalid',OriginalFolderName); InvalidImFolder=fullfile(AnotFolder,InvalidFolderName); if ~exist(InvalidImFolder,'dir') mkdir(InvalidImFolder); end InvalidImSet=dir(strcat(AnotFolder,'\*.jpg')); ImFileNum=length(InvalidImSet); for i=1:ImFileNum ImFileName=InvalidImSet(i).name; ImFilePath=fullfile(AnotFolder,ImFileName); movefile(ImFilePath,InvalidImFolder); end % %一種簡潔的操作 % InvalidFolderName=strcat('Invalid',OriginalFolderName); % InvalidImFolder=fullfile(AnotFolder,InvalidFolderName); % InvalidIms=strcat(AnotFolder,'\*.jpg'); % movefile(InvalidIms,InvalidImFolder,'f')%移動資料夾下所有含有.jpg字尾名的圖片,'f'表示如果放置的資料夾不存在自動建立一個
至此就完成了把標註圖片及標註檔案從雜亂的檔案中取出來了