matlabを使用して画像にラベルを付ける

2389 ワード

最近の任務は画像にラベルをつけて、純粋な体力の仕事です.
タスクの簡単な説明:いくつかのフォルダの画像を分類します.
一般的なアプローチは、次のとおりです.
1.まず、A/B/C/Dの4つのもののうちの1つまたは複数を含む画像を開く.
2.この画像に何が含まれているかを判断する:A?AB?など;
3.画像に必要なもののいずれかが含まれていない場合は、破棄する.
4.そうでなければ、画像を対応するフォルダに保存し、画像の名前を変更します.
この仕事で一番気持ち悪いのは、「図を読む」「判断する」「保存する」という簡単な繰り返しの動作を大量に操作することです.しかし、このような特徴により、このタスクを完了するプロセスを最適化する機会があります.
最適化後のプロセス:
1.画像が自動的にポップアップする;
2.私は肉眼で画像のカテゴリを判断して、キーボードの上で画像のラベルをたたきます(ラベルは123などの数字に予め設定して、とても時間を節約します);
3.プログラムはラベルに基づいて自動的に画像を保存し、画像の名前を変更する.
ほら、matlab関数を書くと、上の太字で説明したように、私はただ一つのことをすることができます.
私はプログラム全体を3つの部分に分けて、機能によって:
1.read()関数;
2.saveAs()関数;
3.main()関数;
filefolder_path = '';
save_path = '';
work_path = '';

filefolders = dir(filefolder_path) %           
types = ['A';'B';'C';'D']

%        
for k=1:length(types)
    mkdir([save_path types])
end

%process
for i=1:length(filefolders)
    filefolder = filefolders(i).name;
    file_path = [filefolder_path '\' filefolder]
    files = dir(file_path);
    len = length(files);

    %       ,       
    if len<1
        continue
    end
    %            
    for j=1:len
        %dir        '.' '..'
        if strcmp(files(j).name,'.') || strcmp(files(j).name,'..')
            continue
        end
        
        thisfile = [file_path '\' files(j).name];
        read(thisfile);
        #    
        p = '1:A 5:B 6:C 9:D';
        #a         
        a = input(p);
        #dest_path           
        dest_path=saveAs(a,types,save_path);
        p1 = '1:AP 2:LAT';
        ti = input(p1);
        if ti == 1
            new_name = 'AP';
        elseif ti == 2
            new_name = 'LAT';
        end
        %         
        copyfile(file_path,dest_path);
        %         
        cd(dest_path);
        %        command
        command = ['rename' 32 current_name 32 new_name];
        status = dos(command);
        %              ;
        cd(work_path);
    end
end
    

CSDNはmatlabコードフォーマットがないようですね..
さらに、
1.matlabコマンドラインウィンドウで入力:format longは数値表示ビット数を16にすることができる.
2.input関数の使用:p='this will show on the screen';a= input(p);
キーボードに何かを入力すると、aに取られます.
3.呼び出す関数の経路、プログラム内の作業経路との違いに注意する.
4.タスクの性質を審査し、プログラミングを柔軟に運用して仕事を簡素化する.