![]() |
[求助]在图像中选取区域,将区域变成黑色
最近碰到一个难题,是这样的:
导师要处理一个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: |
所有时间均为北京时间。现在的时间是 12:47。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.