←Select platform

DeskewCommand Class

Summary
Rotates the specified image to straighten it.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public class DeskewCommand : RasterCommand 
@interface LTDeskewCommand : LTRasterCommand 
public class DeskewCommand 
    extends RasterCommand 
public ref class DeskewCommand : public RasterCommand   
class DeskewCommand(RasterCommand): 
Remarks

This command is typically used to automatically straighten scanned images, including bank checks. This command is available in the Document/Medical Toolkits.

This command contains a special algorithm for detecting the skewed checks. To use this, add the following flags to Flags property (DeskewCommandFlags.UseCheckDeskew | DeskewCommandFlags.UseLineDetectionCheckDeskew)

  • If the Flags property or the flags parameter of the Constructor contains DeskewCommandFlags.ReturnAngleOnly, the command will update the Angle property without rotating the image.
  • The calculated rotation is limited to 20 degrees in either direction. This command is intended for images, such as scanned documents, that are mainly horizontal lines of text. The results are less predictable with other types of images.
  • This command includes an option to skip deskewing if the angle is very small.
  • This command does not support 12 and 16-bit grayscale and 48 and 64-bit color images. If the image is 12 and 16-bit grayscale and 48 and 64-bit color, the command will not throw an exception.
  • This command supports signed/unsigned data images.
  • This command does not support 32-bit grayscale images.

For more information, refer to Introduction to Image Processing With LEADTOOLS and Deskewing.

Deskew Function - Before

Deskew Function - Before

Deskew Function - After

Deskew Function - After

View additional platform support for this Deskew function.

Example

Runs the DeskewCommand on an image and straightens it.

C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
public void DeskewCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Clean.tif")); 
 
   // Prepare the command 
   DeskewCommand command = new DeskewCommand(); 
   //Deskew the image. 
   command.Flags = DeskewCommandFlags.DeskewImage | DeskewCommandFlags.DoNotFillExposedArea; 
   command.Run(image); 
 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.IOException; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.core.*; 
 
 
public void deskewCommandExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   final String OUTPUT_FILE_PATH = combine(LEAD_VARS_IMAGES_DIR, "Result.tif"); 
 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.setThrowExceptionsOnInvalidImages(true); 
   RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "Clean.tif")); 
 
   // Prepare the command 
   DeskewCommand command = new DeskewCommand(); 
 
   // Deskew the image. 
   command.setFlags( 
         DeskewCommandFlags.DESKEW_IMAGE.getValue() | DeskewCommandFlags.DO_NOT_FILL_EXPOSED_AREA.getValue()); 
   command.run(image); 
   codecs.save(image, OUTPUT_FILE_PATH, RasterImageFormat.TIF, 0); 
 
   System.out.println("Command run and image saved to " + OUTPUT_FILE_PATH); 
   assertTrue(new File(OUTPUT_FILE_PATH).exists()); 
} 
Requirements

Target Platforms

Help Version 23.0.2024.3.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ImageProcessing.Core Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.