我正在进行图像处理这个项目。我试图使用imellipse来获取我想要的区域的掩码,以便我可以在我的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);
答案 0 :(得分:0)
createMask
的格式为:
BW = createMask(h_roi,h_im);
h_roi
是roi的句柄(在您的情况下为b
),而h_im
是图像的句柄。例如在这个标准示例中来自docs:
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作为指向图像句柄的全局变量 - 我们无法从你到目前为止给出的代码中看出来。我唯一的建议是尽可能避免使用全局变量。