2011-03-09 64 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