←Select platform

DeskewCommand Class

Summary

Rotates the specified image to straighten it.

Syntax

C#
VB
Java
Objective-C
WinRT C#
C++
@interface LTDeskewCommand : LTRasterCommand
public class DeskewCommand extends RasterCommand
function Leadtools.ImageProcessing.Core.DeskewCommand()

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. In Silverlight versions of LEADTOOLS, this image processing command will fail if the image data for the RasterImage object is stored internally using a Silverlight WriteableBitmap object. For more information, refer to Image Processing Command Limitations in Silverlight.

Example

Runs the DeskewCommand on an image and straightens it.

C#
VB
WinRT C#
Silverlight C#
Silverlight VB
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Core 
 
    
Public Sub DeskewCommandExample() 
   Dim codecs As New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Clean.tif")) 
 
   ' Prepare the command 
   Dim command As DeskewCommand = New DeskewCommand 
   'Deskew the image. 
   command.Flags = DeskewCommandFlags.DeskewImage Or DeskewCommandFlags.DoNotFillExposedArea 
 
   command.Run(leadImage) 
 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
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:\Users\Public\Documents\LEADTOOLS Images"; 
} 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
       
public async Task DeskewCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
   // Load the image 
   string srcFileName = @"Assets\Clean.tif"; 
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName); 
   RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile)); 
 
   // Prepare the command 
   DeskewCommand command = new DeskewCommand(); 
   //Deskew the image. 
   command.Flags = DeskewCommandFlags.DeskewImage |   DeskewCommandFlags.DoNotFillExposedArea; 
   command.Run(image); 
 
} 
using Leadtools; 
using Leadtools.Examples; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
public void DeskewCommandExample(RasterImage image, Stream outStream) 
{ 
   // Prepare the command 
   DeskewCommand command = new DeskewCommand(); 
   //Deskew the image. 
   command.Flags = DeskewCommandFlags.DeskewImage |   DeskewCommandFlags.DoNotFillExposedArea; 
   command.Run(image); 
   // Save result image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.Save(image, outStream, RasterImageFormat.CcittGroup4, 1); 
   image.Dispose(); 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Core 
 
Public Sub DeskewCommandExample(ByVal image As RasterImage, ByVal outStream As Stream) 
   ' Prepare the command 
   Dim command As DeskewCommand = New DeskewCommand() 
   'Deskew the image. 
   command.Flags = DeskewCommandFlags.DeskewImage Or DeskewCommandFlags.DoNotFillExposedArea 
   command.Run(image) 
   ' Save result image 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.Save(image, outStream, RasterImageFormat.CcittGroup4, 1) 
   image.Dispose() 
End Sub 

Requirements

Target Platforms

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
Leadtools.ImageProcessing.Core Assembly
Click or drag to resize