⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pasviewannotation.m

📁 这是一篇权威文章的代码
💻 M
字号:
function record=PASviewannotation(filename)  PASdir='../data/PASCAL/';  record=PASreadrecord(filename);  numplots=1;  for i=1:length(record.objects),     if (~isempty(record.objects(i).mask)), numplots=numplots+1; end;  end;  R=floor(sqrt(numplots));C=ceil(numplots/R);  img=imread([PASdir,record.imgname]);  aspectratio=record.imgsize(1)/record.imgsize(2);  subplot(R,C,1);imagesc(img);axis off;box off;hold on;  if (record.imgsize(3)==1), colormap(gray); end;  %title(record.imgname);  maskplot=2;  for i=1:length(record.objects),    subplot(R,C,1);    drawbox(record.objects(i).bbox);    if (~isempty(record.objects(i).polygon)),       drawpoly(record.objects(i).polygon);    end;    if (~isempty(record.objects(i).mask)),       mask=(imread([PASdir,record.objects(i).mask])==i);      drawmaskboundary(mask);      subplot(R,C,maskplot);imagesc(mask);axis off;box off;      maskplot=maskplot+1;    end;  end;  subplot(R,C,1);hold off;  if (maskplot>2),     squeezeplots(R,C,maskplot-1,aspectratio,0.01);   else    axis image;  end;returnfunction axh=squeezeplots(R,C,maxplotnum,aspectratio,minsep)  maxsize=[1-(([C R]+1)*minsep)]./[C R];  if (aspectratio>=1),    alpha=min(maxsize(1),aspectratio*maxsize(2));    newsize=[alpha alpha/aspectratio];  else    alpha=min(maxsize(1)/aspectratio,maxsize(2));    newsize=[aspectratio*alpha alpha];  end;  dc=(1-(newsize(1)*C))/(C+1);  dr=(1-(newsize(2)*R))/(R+1);    set(gcf,'Units','Normalized');  for r=R:-1:1,    for c=1:C,      plotnum=(r-1)*C+c;      if (plotnum<=maxplotnum),	left=dc*c+newsize(1)*(c-1);	bottom=dr*(R+1-r)+newsize(2)*(R-r);	newpos=[left bottom newsize];	axh(plotnum)=subplot(R,C,plotnum);	set(axh(plotnum),'Units','normalized');	set(axh(plotnum),'Position',newpos);      end;    end;  end;  returnfunction drawmaskboundary(mask)  if (length(unique(mask(:)))>2), PASerrmsg('Mask is not binary','');end;  [R,C]=size(mask);  mask=double(mask);  minmask=min(mask(:));  maxmask=max(mask(:));  pmask=[minmask*ones(1,C);mask;minmask*ones(1,C)];  pmask=[minmask*ones(R+2,1) pmask minmask*ones(R+2,1)];  cmask=ones(3);  boundary=filter2(cmask,pmask,'valid');  boundary=(boundary>minmask) & (boundary<(sum(cmask(:))*maxmask));  ind=find(boundary);  [x,y]=meshgrid([1:C],[1:R]);  ax=plot(x(ind),y(ind),'g.','LineWidth',5);returnfunction drawbox(pts)  line(pts([1 3 3 1 1]),pts([2 2 4 4 2]),'Color',[1 0 0],'LineWidth',5);returnfunction drawpoly(pts)  x=pts([1:2:end,1]);  y=pts([2:2:end,2]);  line(x,y,'Color','y','LineWidth',5);return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -