程序分为两个部分,一部分是用鼠标将ROI区的大致轮廓标记出来,第二部分是将标记出来的坐标点之间的线段按设置的单位距离平分,总的效果是将鼠标标记的整个区域的边界点按单位距离输出到txt中。
I = imread('highpos10_2345看图王.bmp'); %-- load the image
figure(1); imshow(I); title('Input Image');
text(6,6,'Left click to get points, right click to get end point','FontSize',[12],'Color', 'r');
[m,xi,yi]=roipoly;
for i=1:int8(max(size(xi))-1)
xy=[xi(i)-xi(i+1),yi(i)-yi(i+1)]; %求两点之间的长度
length=norm(xy);
dis=2; %单位长度
N=int8(length/2); %点数
X=linspace(xi(i),xi(i+1),N);
X=X';
x=[xi(i),xi(i+1)];
y=[yi(i),yi(i+1)];
Y=interp1(x,y,X);
C=zeros(N,2);
C(:,1)=X;
C(:,2)=Y;
if i==1
D=C;
else
D=[D;C];
end
end
imshow(I); hold on;
plot(D(:,1),D(:,2),'o');
hold off;
save Afile.txt D -ASCII; %保存为了指数形式
fid=fopen('b.txt','wt');%写入文件路径,保存为原格式
[m,n]=size(D);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g\n',D(i,j));
else
fprintf(fid,'%g\t',D(i,j));
end
end
end
fclose(fid);