Преобразовать пиксели в относительные сантиметры из кликабельного изображения? - PullRequest
1 голос
/ 03 октября 2010

Немного заморозил мозг, как это сделать. У меня есть изображение области футбольного поля, по которой пользователь нажимает, чтобы указать, где что-то произошло.

Я хочу сохранить координаты в реальных единицах измерения в моей базе данных, чтобы я мог изменить изображение позже. Однако я не могу понять формулу для этого (игнорируя тот факт, что футбольное поле имеет переменную длину).

Итак, скажем, мое изображение размером 400 пикселей на 300 пикселей, представляющее поле реального мира 12000 см x 9000 см, какой будет точка 300 пикселей на 100 пикселей в сантиметрах? Как мне тогда преобразовать это значение см обратно в px на изображении размером 800x600 px? Делать это в ярдах / дюймах также было бы приемлемо.

Пожалуйста, покажите мне рабочие, а не только отдельные значения. Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 октября 2010

Используйте коэффициенты.400 пикселей представляют 12000 см, поэтому соотношение ширины составляет 30 сантиметров на пиксель.Применение этого отношения к 300px дает нам 9000 см.

Во втором примере ваше отношение ширины составляет 15 сантиметров на пиксель (12000/800).Таким образом, 9000 см дает 600 пикселей на втором изображении.

То же самое касается высоты.

2 голосов
/ 03 октября 2010

точно так же, как и любое другое преобразование единиц: 300 * 12000/400, 100 * 9000/300 - это точка, в которой пользователь щелкает по футбольному полю.

В более общем случае, если две шкалы имеют одинаковые нули (т.е. 0 source == 0 target), изнать точку, в которой шкалы равны x source == y target, затем valueInTarget = valueInSource * (y / x).

В более общем смысле, если вы знаете две точки, в которых две шкалы равны, то есть x1 source == y1 target и x2 source == y2 target, тогда valueInTarget == (valueInSource - x1) * (y2 - y1)/(x2 - x1) + y1 == (valueInSource - x2) * (y1 - y2)/(x1 - x2) + y2.

...