【问题标题】:How can I mask a polygon in an image in MATLAB?如何在 MATLAB 中屏蔽图像中的多边形?
【发布时间】:2018-09-12 06:39:14
【问题描述】:

我在图像上绘制了一个多边形,现在想要对其进行遮罩。我只想看到多边形内部的区域,并且外面的一切都是黑色的。

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

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

这是生成的图像:

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

【问题讨论】:

标签: matlab image-processing polygon mask


【解决方案1】:

最简单的方法是使用Image Processing Toolbox 中的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);

使用裁剪后的示例图片,结果如下:

【讨论】:

  • 谢谢@gnovice .........感谢你的回答,它对我有很大帮助......所以再次非常感谢你。
  • @jemishmavani:乐于助人!如果您不知道,您也可以mark an answer as accepted。欢迎使用 Stack Overflow!
猜你喜欢
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多