使用情景是一个带有车辆原点的2D地图。如果车辆移动了0.5像素,地图也应该进行相应的平移。我认为可以使用双线性插值或类似的方法来实现。
如果在Qt中没有简单的解决方案,我会感激非Qt解决方案的提示。
最小示例:
#include <QtWidgets/QApplication>
#include <QtGui/QImage>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// Parameters
QString PATH_IMG_IN = "../img_test_rect.jpg";
QString PATH_IMG_OUT = "../img_out.png";
float TRANSLATE_IN_PX = 0.5;
// load image
QImage img;
img.load(PATH_IMG_IN);
// rotate image.
QTransform trans;
trans.translate(0,TRANSLATE_IN_PX);
QImage img_new = img.transformed(trans, Qt::SmoothTransformation);
// save image
img_new.save(PATH_IMG_OUT, nullptr, 100);
// optional: Get info about true transformation matrix
QTransform trans_true = QImage::trueMatrix(trans, img.width(), img.height());
return app.exec();
}
给定一个具有锐利边界的输入图像(见下文),我期望输出图像具有模糊的边界。但事实并非如此:
如何解决这个问题?
QPainter
可以在浮点坐标处绘制图像。在抗锯齿绘图器中,这样做是否符合您的需求?QImage::transformed
可能比QPainter
的光栅后端功能更少。 - Kuba hasn't forgotten Monica