Java 中的圖像傾斜校正

在計算機圖形圖像處理中,圖像傾斜是矩形圖像的角度偏差。它也稱為圖像傾斜或失真。術語“傾斜”是指圖像的角度。當圖像中元素的視覺位置不均勻時,就會發生圖像傾斜。傾斜會導致任何角都成一定角度,甚至會發生偏移,以至於一側比另一側長。此類照片或掃描圖像可能看起來失真且沒有吸引力。在本文中,我們將學習如何以編程方式檢測圖像傾斜。我們還將學習如何在 Java 中執行圖像傾斜校正。

本文應涵蓋以下主題:

  1. 用於圖像傾斜校正的 Java API
  2. 檢測圖像傾斜角度
  3. 檢測實時圖像的圖像傾斜角度
  4. 自動圖像歪斜校正
  5. 使用自動歪斜校正識別圖像文本
  6. 手動圖像歪斜校正
  7. 使用手動圖像歪斜校正識別圖像文本

用於圖像傾斜校正的 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 中檢測圖像傾斜角度

我們可以按照下面給出的步驟輕鬆檢測文本圖像的傾斜角度:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 調用 CalcSkewImage() 方法。它以圖像路徑作為參數。
  3. 最後,顯示計算出的傾斜角度。

以下示例代碼顯示瞭如何在 Java 中計算圖像的傾斜角度。

// 此代碼示例演示如何計算圖像的傾斜角度。
// 創建 AsposeOcr 的實例
AsposeOCR api = new AsposeOCR();

// 計算傾斜角度
double skew = api.CalcSkewImage("C:\\Files\\source.png");

// 顯示角度
System.out.println("Skew angle: " + skew + "°.");

從實時圖像 URL 檢測圖像傾斜角度

我們還可以按照以下步驟從實時 URL 中檢測圖像的傾斜角度:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 調用 CalcSkewImageFromUri() 方法。它以圖像路徑作為參數。
  3. 最後,顯示計算出的傾斜角度。

以下示例代碼顯示瞭如何在 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 中的自動圖像傾斜校正

我們可以按照下面給出的步驟自動校正圖像歪斜校正:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 PreprocessingFilter 類的一個對象。
  3. 然後,添加 AutoSkew() 過濾器。
  4. 之後,調用 PreprocessImage() 方法對源圖像應用濾鏡。
  5. 最後,保存校正後的圖像。

以下示例代碼顯示瞭如何在 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 中使用自動傾斜校正識別圖像文本

我們可以按照以下步驟應用自動歪斜校正並識別文本:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 RecognitionSettings 類的一個對象。
  3. 然後,以 true 作為參數調用 setAutoSkew。
  4. 之後,使用源圖像和 RecognitionSettings 對象調用 RecognizePage() 方法。
  5. 最後,顯示識別出的文本。

以下示例代碼顯示瞭如何應用自動傾斜校正並識別 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 中的手動圖像傾斜校正

我們可以按照以下步驟將圖像旋轉到指定的角度來手動定義傾斜角度:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 PreprocessingFilter 類的一個對象。
  3. 然後,使用 Rotate() 方法過濾器添加旋轉角度。
  4. 接下來,創建 RecognitionSettings 類的一個實例。
  5. 之後,調用 PreprocessImage() 方法對源圖像應用濾鏡。
  6. 最後,顯示識別出的文本。

以下示例代碼顯示瞭如何在 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 中使用手動圖像傾斜校正識別圖像文本

我們可以按照以下步驟手動定義傾斜角度並識別文本:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 RecognitionSettings 類的一個對象。
  3. 然後,調用 setSkew() 方法。
  4. 之後,使用源圖像和 RecognitionSettings 對象調用 RecognizePage() 方法。
  5. 最後,顯示識別出的文本。

下面的示例代碼展示瞭如何在 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 中的圖像傾斜校正之外,您還可以使用 文檔 了解有關 Aspose.OCR for Java API 的更多信息。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。

也可以看看