Как узнать координаты в реальном изображении из масштабированного изображения - PullRequest
3 голосов
/ 07 июня 2010

Прежде всего, спасибо за ваше время, прочитав мой вопрос: -)

У меня есть оригинальное изображение (w ': 2124, h': 3204) и такое же изображение, масштабированное (w: 512, h:768).Отношение к ширине составляет 4,14 (rw), а отношение к высоте - 4,17 (rh).

Я пытаюсь узнать координаты (x ', y') в исходном изображении, когда получаю координаты в масштабированном изображении (x, y).Я использую формулу: x '= x * rw и y' = y * rh .Но когда я рисую линию или прямоугольник, всегда появляется сдвиг, который увеличивается, когда x или y выше.

Пожалуйста, кто-нибудь знает, как мнепреобразовывать координаты без потери точности?

Заранее спасибо!Оскар.

Ответы [ 3 ]

4 голосов
/ 07 июня 2010

Или вы можете использовать QTransform :: quadToQuad , чтобы создать преобразование и использовать его для отображения точек, линий, линий и т. Д.:

QVector<QPointF>    p1;
p1 << scaledRect.topLeft() << scaledRect.topRight() << scaledRect.bottomRight() << scaledRect.bottomLeft();
QVector<QPointF>    p2;
p2 << originalRect.topLeft() << originalRect.topRight() << originalRect.bottomRight() << originalRect.bottomLeft();
QTransform::quadToQuad(p1, p2, mappingTransform);
...
QPointF originalPoint = mappingTransform.map(scalePoint);
2 голосов
/ 07 июня 2010

Используйте больше десятичных знаков, например.4.1484375 и 4.171875, в противном случае вы получите разницу в 5px.

1 голос
/ 07 июня 2010

Всегда используйте десятичные точки. Иначе вы получите сдвиг Здесь также вы можете увидеть

для х '= 512 * 4,14 = 2119,68 и у '= 768 * 4,17 = 3202,56

Здесь вы теряете координаты. На каком изображении вы рисуете линию в оригинале или в масштабе? Спасибо, надеюсь, поможет вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...