2017-01-28 17 views
0

私は画像の分類子を構築しています。 GUIでは、イメージはテキストボックスに値をロードして挿入し、ボタンを押します。軸の画像を読み込む際に問題があります。 axes関数が呼び出されると、ハンドルはゼロになります(%handle empty - ハンドルは、すべてのCreateFcnsが呼び出されるまで作成されません)。そして私の問題は、どのようにして、軸のために一度に1つの画像を呼び出すだけですか?GUIのmatlabで、軸の画像ループ

理想的な解決方法は、handles.images = imagedatastoreを作成し、ボタンを押すたびにカウンタ(これはすでに作成済み)に追加してからインデックスを与えてデータストアからイメージを取得することです。これで私の問題は、最初はハンドルが空であるため、最初の画像を取得できないということです。私は、軸のcallfunctionをした:

% --- Executes during object creation, after setting all properties. 
function axes1_CreateFcn(hObject, eventdata, handles) 
% hObject handle to axes1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles empty - handles not created until after all CreateFcns called 
[pict_croped,Nphotos,Date_img] =getcropedimagages; 

handles.img =pict_croped; 
i=readimage(handles.img,1); 
% axes(hObject) 
imshow(i) 
% Hint: place code in OpeningFcn to populate axes1 

が、これは2つの問題がある、最初、私は実際にデータストアをもう一度、私はまだ私はボタンを押して、すべての時間を、作成する関数を呼び出すにしたくありません私が持っている場合は、カウンタのindiceは、関数内であることを取得することはできません。

i=readimage(handles.img,handles.counter) 

それはhandles.counter

どのように任意のアイデアを持っていないの、最初の時間に私にエラーを与えるだろうこれを解決するには?私が構築している最初のGUIです。

+0

あなたはコメントを読んでいた "%ヒント:OpeningFcの場所のコードnを指定すると軸1になりますか? – Suever

答えて

1

GUIDEが提供するコメントには、非常に明確な問題があります。 構造体は、すべてCreateFcnが実行されるまで入力されないため、OpeningFcnを使用してグラフィックスオブジェクトの初期化を実行する必要があります。必要なデータをhandles構造体に追加し、guidataを使用して保存して、他のすべてのコールバック関数内から利用できるようにします。

function OpeningFcn(hObject, eventData, handles) 

    [pict_croped,Nphotos,Date_img] = getcropedimagages; 

    handles.img = pict_croped; 
    i = readimage(handles.img,1); 
    imshow(i, 'Parent', handles.haxes1) 

    % "Save" the changes to the handles object 
    guidata(hObject, handles) 
0

まあ、私はで終わる:オープニングfucntionで :

i = readimage(handles.img,handles.counter); 
imshow(, 'Parent', handles.axes1) 

と戻るボタンの呼び出しで:

i = readimage(handles.img,handles.counter); 
imshow(i, 'Parent', handles.axes1) 

ついに非常にシンプルなソリューションである、I私はちょうど最初の反復でブロックされていたと思う...