1. 程式人生 > >利用Matlab生成文字格式的影象目錄及分類標籤

利用Matlab生成文字格式的影象目錄及分類標籤

話不多說,直接上程式碼,有問題請留言

clc;clear;close;
%% 生成txt格式的影象分類標籤
path='D:\人工智慧\影象識別資料\';
folders=dir(path);% dir是direcory的縮寫,是目錄的意思,返回的folders是結構體,包含所有的目錄和兩個特殊的目錄,一個是“.”,代表該資料夾本身,還有一個是“..”,代表該資料夾的上一層資料夾
fid_train=fopen('D:\人工智慧\影象識別資料\train.txt','wt');
fid_test=fopen('D:\人工智慧\影象識別資料\test.txt','wt');
num_folders=numel(folders);
for i=3:num_folders
    folders_name=folders(i).name;
    files=dir([path folders_name '\*.jpg']);% 僅列出裡面jpg格式的檔案
    x=numel(files);
    y=randperm(x);% 打亂影象的順序
    for j=1:x
        if j<=390
            fprintf(fid_train,'%s %s\n',['\' folders(i).name '\' files(y(j)).name],folders_name);% 在train.txt裡面寫入目錄及標籤
        else
            fprintf(fid_test,'%s %s\n',['\' folders(i).name '\' files(y(j)).name],folders_name);% 在test.txt裡面寫入目錄及標籤
        end
    end
end
fclose(fid_train);
fclose(fid_test);

效果如下:

train.txt

\1\0483.jpg 1 \1\0123.jpg 1 \1\0393.jpg 1 \1\0458.jpg 1 \1\0074.jpg 1 \1\0367.jpg 1 \1\0236.jpg 1 \1\0471.jpg 1 \1\0291.jpg 1 \1\0052.jpg 1

....................

test.txt

\1\0056.jpg 1 \1\0012.jpg 1 \1\0372.jpg 1 \1\0010.jpg 1 \1\0414.jpg 1 \1\0423.jpg 1 \1\0355.jpg 1 \1\0411.jpg 1 \1\0311.jpg 1 \1\0138.jpg 1 \1\0386.jpg 1 \1\0473.jpg 1 \1\0178.jpg 1 ....................