我正在做这个关于图像处理的项目。我正在尝试使用非椭圆来获取我想要的区域的掩码,以便我可以在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作为一个全局变量指向图像句柄-我们不能从你给到目前为止的代码。我唯一的建议是尽可能避免使用全局变量。