0
ロードボタンを使用してイメージをロードするコードを作成した後、描画ボタンを使用してイメージに異なる四角形を描画し、テキストファイル。イメージにドラッグ可能な四角形を追加して削除し、ファイルに保存する
私は自分の画像に3つのボタンを作っています。
1.load(それはGUI上の画像をロードします) 2.Draw(それにユーザーを押すことにより、画像上でドラッグ可能な四角形を描画することができるだろう。 3.Save(このボタンのユーザーを使用すると、保存することができるだろうテキストファイル内のすべての矩形)。
ロード
function loadButton_Callback(hObject, eventdata, handles)
% hObject handle to loadButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
I=imread('http://ichef.bbci.co.uk/corporate2/images/width/live/p0/0l/3r/p00l3rnt.jpg/624');
imshow(I);
rectangles=cell(1,1);
count=0;
handles.rectangles=rectangles;
handles.count=count;
guidata(hObject,handles);
function drawButton_Callback(hObject, eventdata, handles)
% hObject handle to drawButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
rectangles=handles.rectangles;
count=handles.count;
count=count+1;
h=imrect;
rectangles{count,1}=h;
handles.count=count;
handles.rectangles=rectangles;
guidata(hObject,handles);
を描きます
保存
function saveButton_Callback(hObject, eventdata, handles)
% hObject handle to saveButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
rectangles=handles.rectangles;
for i=1:length(rectangles)
dlmwrite('P:\bla.txt',rectangles{i}.getPosition,'-append','delimiter',' ','newline','pc');
end
上記のコードは、私が長方形(複数可)を削除するには、次のproblem.Ifでうまく動作し、次のエラーがアップしますか!保存する前に
**Invalid or deleted object**.
ishandleが常に0を返すので、コードは実行されません。私はif条件内で否定を使用しました。しかし、矩形「削除されたオブジェクト」を削除すると同じエラーが表示されました。 –
私はテストする画像ツールボックスしかし、アイデアは正しいはずです。代わりに 'isvalid'を試すことができますか? (ちょうど 'handle'クラスを継承するオブジェクトの場合) –
このアイデアは、長方形を削除する際に発生するイベントを捕捉した場合にのみうまくいくのではないかと心配しています。 –