基于Gui Matlab的椭圆化



我正在做这个关于图像处理的项目。我正在尝试使用非椭圆来获取我想要的区域的掩码,以便我可以在Gui界面上绘制它。

我总是得到错误"createMask期望一个包含图像的当前图形"有人知道是什么导致了这个错误吗?

这是我的程序

global RC
b = imellipse(handles.axes1)
position =wait(b)
ma = createMask(b,RC);
imk=immultiply(ma,RC);
axes=(handles.axes1);
figure;imshow(imk);

createMask的格式为:

BW = createMask(h_roi,h_im);

其中h_roi是roi的句柄(在您的示例中是b), h_im是图像的句柄。例如,在文档中的这个标准示例中:

img = imread('pout.tif');
h_im = imshow(img); % creates image handle
e = imellipse(gca,[55 10 120 120]); % creates handle to roi
BW = createMask(e,h_im); % uses those two to get mask

如果你没有图像的句柄,你可以用findobj:

从适当的轴获取它
h_im = findobj(gca,'Type','image');

在你的情况下,你可能想用一个更明确的链接来代替gca到你想要的轴,例如handles.axes1。以上假设坐标轴中只有一个图像。

也许你的意思是RC作为一个全局变量指向图像句柄-我们不能从你给到目前为止的代码。我唯一的建议是尽可能避免使用全局变量。

最新更新