【问题标题】:Pixel location through MATLAB通过 MATLAB 进行像素定位
【发布时间】:2013-02-16 04:50:33
【问题描述】:

我正在做一个项目,我必须使用通过MATLAB 连接的相机在平台上找到某个对象。我曾想过将平台用作网格,但有人告诉我,使用相机的像素,我可以通过单击相机窗口/屏幕并选择某个像素(对象在将显示在相机窗口/屏幕上)。

有没有办法计算对象的位置(点击的像素)或者有什么可能的方法可以做到这一点?

【问题讨论】:

  • 使用已知的平台尺寸和相机 CCD 的像素尺寸,您不能计算一个比例因子来将像素位置转换为距离吗?
  • 这是在 OpenCV 中完成的:opencv.willowgarage.com/documentation/python/…。我认为有一个 matlab 包可以让你使用 opencv。

标签: image image-processing matlab


【解决方案1】:

尝试在 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) 会容易得多。

【讨论】:

  • 你为什么只使用 imagesc 来显示图像?如果我想使用 imshow,有没有像你的例子一样显示轴(带值)? (无论如何+1)
  • @yes123 我只是习惯性地使用 imagesc,当数据类型正确且在正确范围内时,它的工作原理与 imshow 大致相同----否则它会缩放。你可以改用h=imshow(data);axis on;
  • @yes123 axis on 部分应该打开标签。如果您仍然看不到它们,您可以尝试set(gca,'xtickMode', 'auto', 'ytickmode', 'auto') 或以其他方式使用 xtick、xticklabel 和 xtickmode 等轴属性。
猜你喜欢
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多