在计算机图形和图像处理中,图像倾斜是矩形图像的角度偏差。它也被称为图像倾斜或失真。术语“倾斜”是指图像的角度。当图像中元素的视觉位置不均匀时,就会发生图像倾斜。倾斜会导致任何角成一定角度,甚至会发生偏移,从而使一侧比另一侧长。此类照片或扫描图像可能看起来失真且没有吸引力。在本文中,我们将学习如何以编程方式检测图像倾斜。我们还将学习如何在 Java 中执行图像倾斜校正。
本文将涵盖以下主题:
用于图像倾斜校正的 Java API
对于图像倾斜检测和校正,我们将使用 Aspose.OCR for Java API。它允许对扫描的图像、智能手机照片、屏幕截图、图像区域和扫描的 PDF 执行 OCR。 API 还允许以流行的文档格式保存已识别的文本结果。
API 的 AsposeOCR 类是从图像中识别文本的主要类。它提供了 CalcSkewImage(string) 方法来计算提供的源图像的倾斜角度。它还提供了另一个 CalcSkewImageFromUri(String uri) 方法,用于计算 URI 链接提供的图像的倾斜角度。 PreprocessingFilter 类是图像处理命令的基类。 API 的 RecognitionSettings 类为图像识别提供设置,其中包含允许自定义识别过程的元素。
请下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://releases.aspose.com/java/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-ocr</artifactId>
<version>22.9</version>
</dependency>
在 Java 中检测图像倾斜角度
我们可以通过以下步骤轻松检测文本图像的倾斜角度:
- 首先,创建 AsposeOCR 类的实例。
- 调用 CalcSkewImage() 方法。它将图像路径作为参数。
- 最后,显示计算的倾斜角。
以下示例代码显示了如何在 Java 中计算图像的倾斜角度。
// 此代码示例演示如何计算图像的倾斜角度。
// 创建 AsposeOcr 的实例
AsposeOCR api = new AsposeOCR();
// 计算倾斜角
double skew = api.CalcSkewImage("C:\\Files\\source.png");
// 显示角度
System.out.println("Skew angle: " + skew + "°.");
从实时图像 URL 检测图像倾斜角度
我们还可以按照以下步骤从实时 URL 中检测图像的倾斜角度:
- 首先,创建 AsposeOCR 类的实例。
- 调用 CalcSkewImageFromUri() 方法。它将图像路径作为参数。
- 最后,显示计算的倾斜角。
以下示例代码显示了如何在 Java 中计算图像的倾斜角度。
// 此代码示例演示如何计算图像的倾斜角度。
// 创建 AsposeOcr 的实例
AsposeOCR api = new AsposeOCR();
// 计算倾斜角
double skew = api.CalcSkewImageFromUri("https://www.aspose.com/sample-ocr-page.png");
// 显示角度
System.out.println("Skew angle: " + skew + "°.");
Java中的自动图像倾斜校正
我们可以按照以下步骤自动校正图像歪斜校正:
- 首先,创建 AsposeOCR 类的实例。
- 接下来,初始化 PreprocessingFilter 类的对象。
- 然后,添加 AutoSkew() 过滤器。
- 之后,调用 PreprocessImage() 方法对源图像应用滤镜。
- 最后,保存校正后的图像。
以下示例代码显示了如何在 Java 中应用自动歪斜校正预处理过滤器。
// 此代码示例演示如何使用预处理过滤器应用自动歪斜校正并保存校正后的图像。
// 创建 AsposeOcr 的实例
AsposeOCR api = new AsposeOCR();
// 添加纠偏过滤器
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.AutoSkew());
// 将预处理后的图像保存到文件
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);
在 Java 中使用自动倾斜校正识别图像文本
我们可以按照以下步骤应用自动歪斜校正并识别文本:
- 首先,创建 AsposeOCR 类的实例。
- 接下来,初始化 RecognitionSettings 类的对象。
- 然后,以 true 作为参数调用 setAutoSkew。
- 之后,使用源图像和 RecognitionSettings 对象调用 RecognizePage() 方法。
- 最后,显示识别的文本。
以下示例代码显示了如何应用自动歪斜校正并识别 Java 中的文本。
// 此代码示例演示如何应用自动歪斜校正。
// 创建 AsposeOcr 的实例
AsposeOCR api = new AsposeOCR();
// 在识别设置中启用自动纠偏
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setAutoSkew(true);
// 识别图像
RecognitionResult result = api.RecognizePage("C:\\Files\\source.png", recognitionSettings);
// 显示识别的文本
System.out.println(result.recognitionText);
Java中的手动图像倾斜校正
我们可以按照下面给出的步骤,通过将图像旋转到指定的度数来手动定义倾斜角度:
- 首先,创建 AsposeOCR 类的实例。
- 接下来,初始化 PreprocessingFilter 类的对象。
- 然后,使用 Rotate() 方法过滤器添加旋转角度。
- 接下来,创建 RecognitionSettings 类的实例。
- 之后,调用 PreprocessImage() 方法对源图像应用滤镜。
- 最后,显示识别的文本。
以下示例代码显示了如何使用 Java 中的预处理过滤器应用手动歪斜校正。
// 此代码示例演示如何应用手动歪斜校正。
// 创建 AsposeOcr 的实例
AsposeOCR api = new AsposeOCR();
// 添加纠偏过滤器
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Rotate(-90));
// 将预处理后的图像保存到文件
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);
在 Java 中使用手动图像倾斜校正识别图像文本
我们可以手动定义倾斜角度并按照以下步骤识别文本:
- 首先,创建 AsposeOCR 类的实例。
- 接下来,初始化 RecognitionSettings 类的对象。
- 然后,调用 setSkew() 方法。
- 之后,使用源图像和 RecognitionSettings 对象调用 RecognizePage() 方法。
- 最后,显示识别的文本。
以下示例代码显示了如何应用手动歪斜校正并在 Java 中识别图像文本。
// 此代码示例演示如何应用手动歪斜校正。
// 创建 AsposeOcr 的实例
AsposeOCR recognitionEngine = new AsposeOCR();
// 手动设置倾斜角度
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setSkew(6);
// 识别图像
RecognitionResult result = recognitionEngine.RecognizePage("C:\\Files\\source.png", recognitionSettings);
// 显示结果
System.out.println(result.recognitionText);
获得免费评估许可证
您可以获得免费的临时许可证 试用 Aspose.OCR for Java,不受评估限制。
结论
在本文中,我们学习了如何:
- 执行 OCR 并识别图像上的文本;
- 应用过滤器和处理图像;
- 使用识别设置;
- 使用 Java 保存校正后的图像。
除了 Java 中的图像倾斜校正之外,您还可以使用 documentation 了解有关用于 Java API 的 Aspose.OCR 的更多信息。如有任何歧义,请随时在我们的 免费支持论坛 上与我们联系。