2016-04-28 5 views
0

Привет я пытаюсь извлечь координаты с изображения (например circle.png прилагается) enter image description hereКак показать ginput координаты в значение вещественной оси

Я использую ginput для извлечения х, у coorinate моего интереса (в этом случай 4 красные точки внутри круга)

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

я нажимаю на 4 красных точек и я х, у координаты, как показано ниже

x=134.000000000000 
    154.000000000000 
    125.000000000000 
    136.000000000000 


y= 83 
    153.000000000000 
    170.000000000000 
    245.000000000000 

В этом случае, х и y координаты, которые я получил, основаны на какой оси? Как преобразовать эти координаты x и y в мои реальные данные (т. Е. Я хотел бы показать ось x от 0 до 15 и ось y от 0 до 5)?

+0

mee mee: Это труднее решить проблему. Если у вас есть предварительная информация о том, как большой пиксель находится в мировых координатах, то это просто простое масштабирование от x и y указывает на расстояния. Если вы не знаете, каковы размеры пикселей, вы можете посмотреть https://www.mathworks.com/help/vision/examples/measuring-planar-objects-with-a-calibrated-camera.html – akamath

ответ

0

По умолчанию imshow скрывает отметки осей, на которых отображается изображение. Для того, чтобы увидеть, что фактические пределы оси (и, следовательно, как ваше изображение масштабируется по оси), вы можете сделать

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

Или, если вы хотите, чтобы сделать ось видимыми метки, то вы можете сделать

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

x и y Точка, возвращаемая ginput, относится к этим осевым пределам.

+0

Привет, Фил, спасибо за ваш совет. Я пробовал то, что вы предложили, но код генерирует две фигуры (один показывает только масштаб (т. Е. Ось х и у), а один показывает изображение). Можете ли вы предложить, почему так происходит? Извините за мое невежество. Tks. –

+0

Код, который вы показываете, не генерирует 2 цифры. Что еще вы делаете? –

+0

Я просто добавляю команду, которую вы предложили. Здесь I = imread ('circle.png'); get (gca, 'Xlim') get (gca, 'YLim') рисунок, imshow (I) [y, x] = ginput; –