【发布时间】: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