MATLAB中的像素位置

4
我正在处理一个项目,需要通过MATLAB使用连接的摄像头在平台上找到特定物体。我考虑将平台作为网格来使用,但有人告诉我可以通过点击摄像头窗口/屏幕并选择某个像素(物体将显示在摄像头窗口/屏幕上的位置)来精确获得该位置,使用摄像头的像素可能会更好。是否有计算对象(点击像素)位置的方法或者其他可能实现这一点的方式?

利用平台的已知尺寸和相机CCD的像素尺寸,你不能计算一个比例因子将像素位置转换为距离吗? - b3.
这是OpenCV的实现方式:http://opencv.willowgarage.com/documentation/python/calib3d_camera_calibration_and_3d_reconstruction.html?highlight=calibrate#CalibrateCamera2。我认为有一个Matlab包可以让你使用OpenCV。 - SiggyF
1个回答

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


为什么你使用imagesc来显示图像?如果我想使用imshow,有办法像你的例子一样显示带刻度值的坐标轴吗?(+1) - dynamic
@yes123 我只是出于习惯使用imagesc,当数据类型正确且在正确范围内时,它的效果与imshow大致相同——否则它会进行缩放。你可以使用h=imshow(data);axis on;代替。 - Steve
1
@yes123,“axis on”部分应该打开标签。如果您仍然看不到它们,可以尝试“set(gca,'xtickMode', 'auto', 'ytickmode', 'auto')”,或者调整轴属性,如xtick、xticklabel和xtickmode。 - Steve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接