獲得的位置的x偏移量,請考慮以下代碼。它顯示瞭如何從座標軸轉換爲圖像像素座標。
如果使用默認的1:width
和1:height
以外的自定義XData/YData位置繪製圖像,則此功能特別有用。在下面的例子中,我在x/y方向上移動了100和200個像素。
function imageExample()
%# RGB image
img = imread('peppers.png');
sz = size(img);
%# show image
hFig = figure();
hAx = axes();
image([1 sz(2)]+100, [1 sz(1)]+200, img) %# shifted XData/YData
%# hook-up mouse button-down event
set(hFig, 'WindowButtonDownFcn',@mouseDown)
function mouseDown(o,e)
%# get current point
p = get(hAx,'CurrentPoint');
p = p(1,1:2);
%# convert axes coordinates to image pixel coordinates
%# I am also rounding to integers
x = round(axes2pix(sz(2), [1 sz(2)], p(1)));
y = round(axes2pix(sz(1), [1 sz(1)], p(2)));
%# show (x,y) pixel in title
title(sprintf('image pixel = (%d,%d)',x,y))
end
end
(注意如何軸界限不會在(1,1)
啓動,從而爲axes2pix
的需要)
這看起來很有希望。但是,如果我沒有軸柄,該怎麼辦?例如,houghlines http://www.mathworks.com/help/toolbox/images/ref/houghlines.html接受二進制圖像並返回包含帶有(x,y)的行的結構。這是我想要處理的具體情況。他們是如何做到的呢? – dsg
因爲'houghlines'本身就是一個圖像(2D矩陣),我想'X,Y'對可能已經在像素空間了,因爲沒有圖形/軸對象(因此沒有轉換到屏幕空間)來解釋。 – tmpearce