2012-03-29 7 views
3

次のコードセグメントでは、Figureのピクセル座標(行と列)に関するテキスト境界ボックスの正確な位置を取得しようとしています。最終的に(配列imgから)その部分を切り捨てることができます。しかし、私がtextBoxから得ることはあまり役に立ちません!いくつかの負の数!誰も私にいくつかのヒント enter image description hereMatlabのFigure行、列に関するテキストの正確な位置を取得する方法

hFigure = figure('Color', 'w','position',... 
[1600 200 600 250]... 
,'MenuBar', 'none', 'ToolBar', 'none'); 

axis off 
axis([0 1 0 1]); 

hText=text('String','T','fontsize',100,'color','r',... 
    'fontname','Times New Roman',... 
'HorizontalAlignment','left','VerticalAlignment','bottom',... 
'BackgroundColor',[.8 .8 .8],'EdgeColor','b'); 
set(hText, 'Units','Pixels'); 
textBox=get(hText, 'Extent');%[left,bottom,width,height] 
figBox = get(hFigure,'Position'); 

imageData = getframe(hFigure);   

img = imageData.cdata; 

%using textBox and imgBox: 
imgText=img(?:?,?:?,3); **% this is what I want to do** 
+0

は、プロットは、実際の軸にすべきではありませんか?だからあなたはまた、get(gca、 'position')をする必要があります – bdecaf

答えて

0

を提供することができますimggetFrameコマンドから来て、それが'Extent'プロパティは、このフレームの座標を知っているかどうかを非常に明確ではないことに注意してください。

あなたがimgの座標を把握したい場合は、やったほうが良いかもしれません:

imagesc(img); 
をし、それらの座標に応じてトリミング。

あなたがimagescを使用したら、あなたはまた、4つのクリックポイントを取得し、あなたがたxyの位置からする方法をクロップする計算を行うために[x,y] = ginput(4);を使用することができます。

少なくともそれは私がやることです。


Also, as a side note here's a link about how to properly use the Extent property.

関連する問題