我如何删除gui的作物马克吗?

1视图(30天)
埃尔希
埃尔希 2014年6月19日
评论道: 埃尔希2014年6月19日
嗨,我有一个GUI中的作物按钮,我可以单击按钮然后作物图像显示在轴。如何删除作物如果我想再次recrop马克?我想清晰图像中的作物马克如果有任何一旦我点击按钮。
函数BtnCrop_Callback (hObject eventdata处理)
句柄。输出= hObject;
句柄。currentAxes =得到(handles.Axes,“孩子”);
如果isempty (handles.currentAxes) = = false
promptMesg = sprintf (“你确定作物的形象?”);
按钮= questdlg (promptMesg,“作物图像”,“是的”,“不”,“是的”);
如果strcmpi(按钮,“是的”)
句柄。k = waitforbuttonpress;
point1 =得到(gca,“CurrentPoint”);
handles.finalRect= rbbox;
卷帘窗=得到(gca,“CurrentPoint”);
point1 = point1 (1:2);
卷帘窗=卷帘窗(1:2);
p1 = min (point1、卷帘窗);
抵消= abs (point1-point2);
handles.x= round([p1(1) p1(1)+offset(1) p1(1)+offset(1) p1(1) p1(1)]);
handles.y= round([p1(2) p1(2) p1(2)+offset(2) p1(2)+offset(2) p1(2)]);
句柄。cropSuccess = true;
持有
手册
情节(handles.x handles.y);
%(2)暂停
%删除(hPlot);
其他的
句柄。cropSuccess = false;
结束
其他的
errordlg (“没有选择形象!”);
结束
guidata (hObject处理);
删除(hPlot) 我试着不是我想要的。我想要的是我每次单击按钮,它会检查是否有作物图像中标记,如果有,那么它将被删除(处理。x和hanles。y还将被删除);如果不是,那么我就可以开始新的种植。
非常感谢。

接受的答案

杰夫•海斯
杰夫•海斯 2014年6月19日
你几乎拥有它——你只需要分配处理的作物面积 处理 对象,然后这个更新(处理)应用程序数据存储,将下次用户按下按钮。
如果用户按下 作物 按钮,选择 是的 ,然后选择一个区域在图像代码
情节(handles.x handles.y);
就变成了
%保存处理周围的矩形区域的图像
%,裁剪
句柄。hCropRect =情节(handles.x handles.y);
%更新应用程序数据存储
guidata (hObject处理);
我们有一个处理的矩形区域裁剪。你想要这个矩形当用户按下删除 作物 按钮,所以我们可以做以下的第一行按钮回调(在你的上面 如果 声明中,或作为第一行中 如果 块)
%检查处理对象hCropRect字段
如果isfield(处理,“hCropRect”);
%删除只有非空
如果~ isempty (handles.hCropRect)
删除(handles.hCropRect);
%的处理来表示,它已被删除
句柄。hCropRect = [];
x和y %明显
handles.x= [];
handles.y= [];
%更新应用程序数据存储
guidata (hObject处理);
结束
结束
试着上面,看看会发生什么!
我注意到你的代码没有 guidata (hObject,处理) 命令——你如何能够访问 handles.x , handles.y , handles.finalRect 这个函数外的吗?
3评论
埃尔希
埃尔希 2014年6月19日
嗨,杰夫·海斯!它完美地!谢谢你这么多!

登录置评。

答案(1)

图像分析
图像分析 2014年6月19日
我没有看到任何裁剪。没有索引,没有调用imcrop(),什么都没有。使用hPlot处理你绘制的线,然后删除处理会把你画的线从图像。它将 把x和y字段从处理像你说。x和y领域依然存在,尽管叠加的盒子不见了。
你应该把删除(hPlot) 之前 调用图:
如果存在(“hPlot”,“var”)
删除(hPlot);
结束
hPlot =情节(处理。x, handles.y)
croppedImage = imcrop (originalImage之下,handles.finalRect);
2的评论
图像分析
图像分析 2014年6月19日
解释如何。但你只是定义一个盒子 没有被裁剪 。没有图像裁剪,矩阵被裁剪,至少在你显示的代码。

登录置评。

类别

找到更多的在交互控制和回调帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!