matlab从图像中选取区域,[求助]在图像中选取区域,将区域变成黑色

icon1.gif [求助]在图像中选取区域,将区域变成黑色

最近碰到一个难题,是这样的:

导师要处理一个2D图像, 因为要交互,需要一个小界面,我弄了一个GUI,在GUI中显示图像,有一块不需要处理,因此,需要将这一块涂黑,可以在图中点几个点,以这几个点顺序可以构造一个多边形,将多边形内部的区域涂黑,就是这么简单,但是显然不能利用外部工具

我试了几种方法,分别说下:

1。对图像中此区域内的点进行处理,利用inpolygon()判断点是否在画的多边形中,然后置换颜色,程序如下:

I = imread('1.jpg');

figure,imshow(I);

hold on;

Number = 0;

x = [];

y = [];

disp('Left mouse button picks points.')

disp('Right mouse button picks last points.')

but = 1;

while but == 1

[xi, yi, but] = ginput(1);

plot(xi,yi);

Number = Number + 1;

x(Number) = xi;

y(Number) = yi;

end

x_min = min(x);

x_max = max(x);

y_min = min(y);

y_max = max(y);

for i=x_min:x_max

for j=y_min:y_max

if (inpolygon(i,j,x,y) == 1)

i_int = int32(i);

j_int = int32(j);

I(j_int,i_int,1) = 0;

I(j_int,i_int,2) = 0;

I(j_int,i_int,3) = 0;

end

end

end

imshow(I);

这种方法基本能实现要求,可以将原图修改掉,但是缺点就是速度太慢

2。用Matlabl里的 fill 函数

Matlab提供了一个fill 函数,可以在图中快速进行多边形填充,使用也简单,但是这样画的多边形怎么保存到原来的文件呢? 因为下一步要继续对原文件进行操作。 我试过saveas,但是保存时总是把figure的边界保存下来了,不符合要求。

所以,各位大侠,帮帮小弟吧,为这个小问题纠结了一天了,还有其他重要的事要做呢,谢谢谢谢

:lovely: :lovely: :lovely: :lovely: :lovely: :lovely: :lovely: :lovely:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值