基于前一个问题(read coordinate text file for regionprop usage - Matlab)我希望用扩展边界(零+10)绘制对象,但它不起作用。有什么理由吗?
代码:
clc;
clear;
filename = fullfile('E:/outline.txt');
fileID = fopen(filename);
C = textscan(fileID,'%d %d');
fclose(fileID);
xMax = double(max(C{1})-10)
yMax = double(max(C{2})+10)
bw=roipoly(zeros(xMax ,yMax ),C{1},C{2});
imshow(bw);
stats = regionprops(bw);
坐标文本文件内容如下:
88 10
87 11
87 12
88 13
88 14
92 21
93 22
93 23
94 24
95 25
100 33
101 34
102 34
103 34
103 33
103 32
103 31
103 30
103 29
103 28
103 27
102 26
102 25
101 24
101 23
100 22
100 21
100 20
99 19
99 18
94 12
93 12
92 12
91 11
90 11
答案 0 :(得分:1)
xMax = double(max(C{1})-10)
应该是+10。这样,您可以使图像小于多边形。
如果您还要在左侧扩展图像,请在多边形坐标中添加偏移量:
bw = roipoly(zeros(yMax, xMax), C{1}+5, C{2}+5);
另请注意,我从您的代码中交换了xMax
和yMax
,这可能是您看到的另一个问题。矩阵尺寸指定为(高度,宽度),矩阵的索引也是如此。但是roipoly
等一些函数首先使用x
坐标,然后使用y
坐标。这是MATLAB语法的常见缺陷。
我刚刚了解到上述内容与
相同bw = roipoly(yMax, xMax, C{1}+5, C{2}+5);