2011-03-09 46 views
4

我正在開發一個項目,我必須通過MATLAB使用附加的相機在平臺上找到某個對象。我想過使用平臺作爲網格,但我被告知使用相機的像素,我可能能夠通過點擊相機窗口/屏幕並選擇某個像素(對象的位置將在相機窗口/屏幕上顯示)。通過MATLAB的像素位置

有沒有一種方法來計算對象的位置(點擊像素)還是有任何可能的方式,我可以做到這一點?

+0

使用平臺的已知大小和相機的CCD的像素尺寸,能不能別計算比例係數轉換像素位置距離是多少? – 2011-03-09 19:45:45

+0

這是在OpenCV中完成的操作:http://opencv.willowgarage.com/documentation/python/calib3d_camera_calibration_and_3d_reconstruction.html?highlight=calibrate#CalibrateCamera2。有一個matlab包允許你使用我認爲的opencv。 – SiggyF 2011-03-09 22:19:50

回答

6

嘗試使用MATLAB中的ginput(...)函數,就像這樣:

% Load some image: 
data = imread('fishy 01.jpg'); 

% display the image: 
figure(88); 
clf; 
h = imagesc(data); 
axis image 

% Get a value from the screen: 
[x, y] = ginput(1); 

msgbox(['You want pixel: ' num2str(round([x,y]))]); 

這會給你的像素的位置,在當前軸。或者,您可以使用圖回調WindowButtonUpFcn來獲取當前鼠標在圖中的位置,然後將其轉換爲您想要的相對軸,然後縮放到當前軸xlim和ylim。但是ginput(1)會容易得多。

Example Run

+0

你爲什麼只用imagesc來顯示圖像?如果我想使用imshow,是否有像顯示軸一樣的軸(帶有值)? (無論如何+1) – dynamic 2012-11-27 16:09:39

+0

@ yes123我只是習慣使用imagesc,當數據類型正確並在正確的範圍內時,其工作原理與imshow相同 - 否則就會縮放。您可以使用'h = imshow(data); axis on;'來代替。 – Steve 2012-11-29 22:13:12

+0

我試過了,但軸附近的數值沒有顯示 – dynamic 2012-11-29 22:18:20