1. 程式人生 > >Matlab中對影象應用plot或者rectangle後的影象儲存問題

Matlab中對影象應用plot或者rectangle後的影象儲存問題

我們處理好影象後,為了標識出影象的目標區域來,需要利用plot函式或者rectangle函式,這樣標識目標後,就儲存影象。一般的儲存影象可以利用figure中的edit選單中的copy figure,這樣可以完成,但是儲存後的影象外圍多了一片區域,這是figure的區域,效果如下

於是我們想辦法,利用imwrite函式可以儲存影象,但是利用plot或者rectangle函式後,並沒有改變影象原來的畫素值,imwrite函式不可以。怎麼辦?哈哈……於是就有了下面的一種演算法……

以下面的影象為例,將影象中的白色區域利用矩形標記出來:

具體的程式如下所示:

clc;close all;clear all;
Img=imread('1.jpg');
if ndims(Img)==3
I=rgb2gray(Img);
else
I=Img;
end
I=im2bw(I,graythresh(I));
[m,n]=size(I);
imshow(I);title('binary image');
txt=get(gca,'Title');
set(txt,'fontsize',16);
L=bwlabel(I);
stats=regionprops(L,'all');
set(gcf,'color','w');
set(gca,'units','pixels','Visible','off');
q=get(gca,'position');
q(1)=0;%設定左邊距離值為零
q(2)=0;%設定右邊距離值為零
set(gca,'position',q);
for i=1:length(stats)
hold on;
rectangle('position',stats(i).BoundingBox,'edgecolor','y','linewidth',2);
temp = stats(i).Centroid;
plot(temp(1),temp(2),'r.');
drawnow;
end
frame=getframe(gcf,[0,0,n,m]);
im=frame2im(frame);
imwrite(im,'a.jpg','jpg');%可以修改儲存的格式

儲存影象如下所示: