在错误的位置插入图形绘制FilledPolygon-Matlab

时间:2019-07-19 20:13:57

标签: matlab

insertshape函数为什么会在错误的位置绘制FilledPolygon?

代码:

I = imread('coins.png');
BW = im2bw(I, graythresh(I));
[B,L] = bwboundaries(BW,'noholes');
boundary = B{1};
boundary1 = reshape(boundary.',1,[])
newI = insertShape(I,'FilledPolygon',boundary1);
imshow(newI);

1 个答案:

答案 0 :(得分:1)

在MATLAB中,关于矩阵索引(i,j)(其中i是行号)和坐标(x,y)(其中x是水平坐标)经常感到困惑。

请务必仔细阅读文档,以查看它是指ij还是行和列,还是指x和y。

在这种情况下,bwboundaries返回

  

边界像素的行和列坐标

insertShape期望x和y坐标。

因此,要将一个输出放到另一个中,您需要交换B{1}的两列:

I = imread('coins.png');
BW = im2bw(I, graythresh(I));
[B,L] = bwboundaries(BW,'noholes');
boundary = B{1};
boundary = boundary(:,[2,1]);  % <<< swap columns
boundary1 = reshape(boundary.',1,[]);
newI = insertShape(I,'FilledPolygon',boundary1);
imshow(newI);