在图片上,使用鼠标选点的方式,截取出任意形状包围的区域。
废话不多说,直接上代码:
%鼠标选中特定区域(支持单个区域选取)
clc;clear all;close all;
load matlab.mat
I1=I;
figure,imagesc(I1);
hold on
[x,y,flag]=ginput(1);
m(1)=x;
n(1)=y;
k=2;
while(flag==1)
[x1,y1,flag1]=ginput(1);
if flag1==1
m(k)=x1;n(k)=y1;
line([m(k-1) m(k)],[n(k-1) n(k)],'color','r');
k=k+1;
flag=flag1;
else
break
end
end
line([m(k-1) m(1)],[n(k-1) n(1)],'color','r');
BW = roipoly(I1,m,n);
mask=uint8(BW);
figure,imagesc(mask); %生成的标签
save('C:\Users\Desktop\新建文件夹\代码\mask.mat','mask');%保存标签
I2=double(I1).*double(BW);
% figure,imagesc(I2);
结果:
代码来源:https://www.ilovematlab.cn/thread-111922-1-1.html
一些别的方法:https://blog.csdn.net/u010125984/article/details/110498768
本代码仅支持单个区域的选取,对于多个区域的选取代码请参见: