首先感谢您抽出时间阅读我的问题 :-)
我有一张原始图片(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较高时增加。
请问有人知道如何在不失去精度的情况下转换坐标吗?
提前致谢! Oscar。
首先感谢您抽出时间阅读我的问题 :-)
我有一张原始图片(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较高时增加。
请问有人知道如何在不失去精度的情况下转换坐标吗?
提前致谢! Oscar。
或者您可以使用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);
使用更多小数位,例如4.1484375和4.171875,否则会产生5像素的差异。
始终使用小数点,否则您将得到偏移量。 在这里您也可以看到
对于 x' = 512 * 4.14 = 2119.68 和 y' = 768 * 4.17 = 3202.56
在这里,您正在失去坐标。 您正在哪个图像上绘制线条,原始的还是缩放后的? 谢谢,希望能帮到您...