如何应用两个多边形两个轮廓

4视图(30天)
约旦Venancio雷特
约旦Venancio雷特 2020年4月5日
评论道: Rena伯曼 2020年10月12日
我有两个图像。目标是找到近似的面积由多边形的轮廓图像。
在第一个图片我画一个多边形,它给了我一个令人满意的近似轮廓(波纹管),因此我能够获得它的面积通过“polyarea”功能。
我想应用相同的第二个图片,有两个轮廓。我想获得近似由两个多边形的面积这两个轮廓。
我怎么改变我的代码来实现这个效果吗?
提前谢谢。
clc
清晰的
关闭所有
跳过= 320;
负载(“Image.mat”);
形象= preenc;
%确定轮廓及其领域
轮廓= bwconncomp (preenc 8);
面积= regionprops(轮廓,“区域”);
图中,imshow (preenc);
%加速边界后的使用
Bperimeter = bwperim (preenc);
Bperimeter = imdilate (Bperimeter strel (“广场”4));
%得到x, y坐标的周长(列索引和行索引,
%)
[y、x] =找到(Bperimeter);
k =边界(x, y, 1);%使用边界损耗因子1的顶点
%初始二进制图像,使用最近添加的多边形
%得到顶点
idx = [k(1:跳过:结束)、k (1)];
drawpolygon (“位置”[x (idx) y (idx)))
%计算多边形的面积
d = polyarea (x (idx), y (idx));
disp (d)

接受的答案

埃米尔哈姆萨
埃米尔哈姆萨 2020年4月6日
试试这个
clc
清晰的
关闭所有
跳过= 50;
负载(“image2.mat”);
形象= preenc;
%确定轮廓及其领域
轮廓= bwconncomp (preenc 8);
面积= regionprops(轮廓,“区域”);
图中,imshow (preenc);
我= 1:Contours.NumObjects
image_ =图像;
%隐藏所有其他补丁
掩码= 0(大小(图片));
面具(Contours.PixelIdxList{我})= 1;
image_面具(~)= 0;
%加速边界后的使用
Bperimeter = bwperim (image_);
Bperimeter = imdilate (Bperimeter strel (“广场”4));
%得到x, y坐标的周长(列索引和行索引,
%)
[y、x] =找到(Bperimeter);
k =边界(x, y, 1);%使用边界损耗因子1的顶点
%初始二进制图像,使用最近添加的多边形
%得到顶点
idx = [k(1:跳过:结束)、k (1)];
drawpolygon (“位置”[x (idx) y (idx)))
%计算多边形的面积
d = polyarea (x (idx), y (idx));
disp (d)
结束

更多的答案(0)

标签

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的