繁体   English   中英

如何在MATLAB中屏蔽图像中的多边形?

[英]How can I mask a polygon in an image in MATLAB?

我在图像上绘制了一个多边形,现在想要掩盖它。 我只是想看到多边形内的区域,并且外面的所有东西都是黑色的。

这是我在图像上绘制多边形的代码:

i = imread('Vlc1.1.png');
pos = [170 350 290 230 430 230 600 350 170 350];
S = insertShape(i,'Polygon',pos);
imshow(S);

这是最终的图像:

在此输入图像描述

如何将多边形外部的所有内容设置为黑色?

最简单的方法是使用图像处理工具箱中poly2mask函数从多边形创建二进制蒙版,然后将图像外的所有像素设置为图像中的0(即黑色):

img = imread('Vlc1.1.png');  % Image data, assumed to be 3D RGB image
pos = [170 350 290 230 430 230 600 350 170 350];  % Pairs of x-y coordinates

bw = ~poly2mask(pos(1:2:end), pos(2:2:end), size(img, 1), size(img, 2));  % 2D mask
bw = repmat(bw, [1 1 size(img, 3)]);  % Replicate the mask to make it 3D
maskimg = img;
maskimg(bw) = 0;
imshow(maskimg);

使用示例图像的裁剪版本,结果如​​下:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM