【问题标题】:How to show ginput coordinates into real axis value如何将ginput坐标显示为实轴值
【发布时间】:2016-04-28 10:55:34
【问题描述】:

您好,我正在尝试从图像中提取坐标(例如附加的 circle.png)

我使用 ginput 提取我感兴趣的 x,y 坐标(在这种情况下,圆圈内有 4 个红点)

A=imread('circle.png');
figure,imshow(A)
[y,x]=ginput

我点击 4 个红点,得到如下 x,y 坐标

x=134.000000000000
  154.000000000000
  125.000000000000
  136.000000000000


y= 83
   153.000000000000
   170.000000000000
   245.000000000000

在这种情况下,我得到的 x 和 y 坐标是基于哪个轴的?如何将这些 x 和 y 坐标转换为与我的真实数据相关联(即我想显示从 0 到 15 的 x 轴和从 0 到 5 的 y 轴)?

【问题讨论】:

  • mee mee:这是一个更难解决的问题。如果您有关于像素在世界坐标中的大小的先验信息,那么它只是从 x 和 y 点到距离的简单缩放。如果您不知道像素大小是多少,您可能需要查看mathworks.com/help/vision/examples/…

标签: matlab coordinates ginput


【解决方案1】:

默认情况下imshow 隐藏显示图像的轴的刻度线。要查看实际的轴限制是什么(以及因此您的图像如何在轴上缩放),您可以这样做

>> get(gca,'Xlim')
>> get(gca,'YLim')

或者,如果您想让轴标签可见,那么您可以这样做

>> h = gca;
>> h.XAxis.Visible = 'on';
>> h.YAxis.Visible = 'on';

ginput 返回的 xy 点与这些轴限制相关。

【讨论】:

  • 嗨菲尔,谢谢你的建议。我已经尝试了您的建议,但代码生成了两个数字(一个仅显示比例(即 x 和 y 轴),一个显示图像)。你能建议为什么会这样吗?对不起我的无知。谢了。
  • 您显示的代码不会生成 2 个数字。你还在做什么?
  • 我只是添加了您建议的命令。这里是 I = imread('circle.png'); get(gca,'Xlim') get(gca,'YLim') 图,imshow(I) [y,x] = ginput;
  • get(gca,'XLim')get(gca,'YLim') 需要在 imshow 之后。
猜你喜欢
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多