如何从缩放图像中了解真实图像中的坐标

时间:2010-06-07 09:48:47

标签: c++ image qt math coordinates

首先感谢您抽出时间阅读我的问题: - )

我有一张原始图像(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 个答案:

答案 0 :(得分:4)

或者您可以使用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);

答案 1 :(得分:2)

使用更多小数点,例如。 4.1484375和4.171875,否则你会得到5px的差异。

答案 2 :(得分:1)

始终使用小数点。否则你将获得转变 在这里你也可以看到

表示x'= 512 * 4.14 = 2119.68 和y'= 768 * 4.17 = 3202.56

这里你失去了坐标。 您在哪个图像上绘制原始线或缩放线? 谢谢希望能帮助你...