我发现了一个有趣的问题,在程序中,我正在努力通过一个ocr处理发票。
在一个步骤中,我取消了映像,现在我有了一个特定的用例。
原始文件(解密):
旋转文件(解密):
我心里在想旋转大约是-15度,但是程序告诉我是-2.2度。
使用的代码:

private BufferedImage rotateImage(BufferedImage image, float angleDegrees, int imageType) {
    long start = System.currentTimeMillis();
    angleDegrees %= 360;
    BufferedImage returnImage = new BufferedImage(image.getWidth(), image.getHeight(), imageType);
    Graphics2D g2d = returnImage.createGraphics();
    g2d.rotate(Math.toRadians(angleDegrees), returnImage.getWidth() / 2, returnImage.getHeight() / 2);
    g2d.drawImage(image, 0, 0, null);
    g2d.dispose();
    long end = System.currentTimeMillis();
    float duration = 1.0f * (end - start) / 1000;
    //System.out.println("Duration: " + duration + " seconds");
    return returnImage;
}

正如您所看到的,代码似乎工作正常,但谁是正确的我如何计算图像的实际旋转?到底是怎么回事?

最佳答案

看看这一行:
它的尺寸是:472*20对其应用arctan函数:

atan(20/472) = 0.042347549 radians

将此值转换为度数,则可以:
2.42633583 degrees

所以,你的程序运行正常,而你对15度的估计是完全错误的。

10-06 01:00