我想将斑马线设为我的投资回报率。功能' roipoly'让我定义一个感兴趣的区域并返回一个二元掩码(这是我下一步所需要的:vision.blobAnalysis)。
在视觉上,这就是我想要实现的目标:
(是的,有一个覆盖ROI的可见矩形。)
Roipoly的参数变化不同:
BW = roipoly(I,c,r)和BW = roipoly(x,y,I,xi,yi)。如果我没有弄错c,r和x,y,xi,yi是坐标。
我应该使用以下哪一项?如何提供坐标参数?另外,如果你知道其他选择来实现同一目标,请赐教。 :)
答案 0 :(得分:0)
您可以使用getrect选择带鼠标的矩形,然后将所选坐标转换为roipoly输入格式。
我使用函数insertShape绘制一个红色矩形 (如果您无权访问所请求的工具箱,则可以使用其他方法)。
我使用的是BW = roipoly(I, c, r)
版本,它将图片大小设置为图片I
。
这是我的代码:
%Read input image.
I = imread('autumn.tif');
h = figure;
imshow(I);
%Specify rectangle with mouse
rect = getrect(h);
%Draw red rectangle (replace pixels data with red color).
J = insertShape(I, 'Rectangle', rect, 'Color', [220, 0, 0], 'LineWidth', 3);
imshow(J);
%Compute rows and columns parameters from selected rect, to expected format of roipoly:
% (x0,y0) is top left corner, and (x1,y1) is bottom right corner.
x0 = rect(1);
y0 = rect(2);
x1 = x0 + rect(3) - 1; %rect(3) is width of rectangle.
y1 = y0 + rect(4) - 1; %rect(4) is height of rectangle.
%Imagine drawing lines from (x0,y0) to (x1,y0) to (x1,y1) to (x0,y1), [and back to (x0,y0), which closes the polygon]
c = [x0, x1, x1, x0];
r = [y0, y0, y1, y1];
BW = roipoly(I, c, r);
figure;imshow(BW);