【问题标题】:Java Image Rotation: Is the computed angle correct?Java 图像旋转:计算的角度是否正确?
【发布时间】:2014-01-03 12:51:43
【问题描述】:

我在正在开发的通过 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;
}

如您所见,代码似乎工作正确,但谁是正确的?我如何弄清楚图像的实际旋转?到底是怎么回事?

【问题讨论】:

    标签: java algorithm rotation ocr tesseract


    【解决方案1】:

    看看这一行:

    它的尺寸是:472 * 20。对其应用 arctan 函数:

    atan(20/472) = 0.042347549 radians
    

    将其转换为度数,您有:

    2.42633583 degrees
    

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

    【讨论】:

      猜你喜欢
      • 2016-10-19
      • 2014-06-30
      • 2015-04-18
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 2012-03-31
      • 2021-04-12
      相关资源
      最近更新 更多