- LeadTools中文图像处理教程(1):更改数据格式 点击进入
- LeadTools中文图像处理教程(2):图像的几何变换 点击进入
- LeadTools中文图像处理教程(3):倾斜校正 点击进入
- LeadTools中文图像处理教程(4):调整图像亮度和对比度 点击进入
- LeadTools中文图像处理教程(5):图像去噪 点击进入
- LeadTools中文图像处理教程(6):检测和增强边缘、线条 点击进入
- LeadTools中文图像处理教程(7):应用艺术效果 点击进入
- LeadTools中文图像处理教程(8):调整色彩 点击进入
- LeadTools中文图像处理教程(9):添加图像至另一个图像 点击进入
- LeadTools中文图像处理教程(10):窗位(仅用于Medical) 点击进入
- LeadTools中文图像处理教程(11):对比图像 点击进入
在扫描文档的过程中经常会出现扫描图像倾斜的情况,倾斜会给显示或随后的处理带来很多不便。因此,图像的倾斜校正是非常必要的一个预处理。LeadTools作为全球领先的图像处理控件,在倾斜校正方面提供了DeskewCommand类进行相关处理,这个命令主要用于图像,例如扫描的文档,主要为有横线的文本。对于其他类型的图像,结果较难预测。还可以应用于银行支票图像。
下面,我们主要为大家介绍:
1 创建“倾斜校正”应用程序的具体步骤
2 DeskewCommand类的简单介绍
创建“倾斜校正”应用程序的具体步骤
1. 打开Visual Studio .NET。点击 文件->新建->项目…。打开新建项目对话框后,在模板中选择“Visual C#”或“Visual Basic”,随后选择“Windows窗体应用程序”。在名称栏中输入项目名称“DeskewCommand”,并使用“浏览”按钮选择您工程的存储路径,点击“确定”。
2. 在“解决方案资源管理器”中,右击“引用”,选择“添加引用”。根据当前工程的 Framework 版本和生成目标平台,选择添加相应的LeadTools控件,例如工程中的版本为 Framework 4.0、生成目标平台是 x86,则浏览选择Leadtools For .NET文件夹” <LEADTOOLS_INSTALLDIR>\Bin\DotNet4\Win32”,选择以下的DLL“:
- Leadtools.dll
- Leadtools.Codecs.dll
- Leadtools.Codecs.Tif.dll
- Leadtools.ImageProcessing.Core.dll
- Leadtools.WinForms.dll
3. 从工具箱(视图->工具箱),添加2个Button控件(将Text属性分别改为加载图像和倾斜校正)。
4. 切换至Form1的代码视图(右击Form1,选择查看代码),将下面几行代码添加到文件开始处:
1: using Leadtools;
2: using Leadtools.Codecs;
3: using Leadtools.Codecs.Tif;
4: using Leadtools.ImageProcessing.Core;
5: using Leadtools.WinForms;
5. 将以下变量添加至Form1类:
1: private RasterImage image;
2: private RasterImageViewer imageViewer;
6. 双击“加载图像”按钮,在button1 Click事件句柄中添加以下代码:
1: // 加载图像
2: codecs = new RasterCodecs();
3:4: codecs.ThrowExceptionsOnInvalidImages = true;
5: image = codecs.Load(Path.Combine(Application.StartupPath, @"..\..\Pic\clean.tif"));
6:7: imageViewer = new RasterImageViewer();
8: imageViewer.Image = image;9: imageViewer.Height = 1200;10: imageViewer.Width = 1000;11: imageViewer.Location = new System.Drawing.Point(0, 50);
12: Controls.Add(imageViewer);13: imageViewer.BringToFront();
7. 双击“倾斜校正”按钮,在button2 Click事件句柄中添加以下代码:
1: if (image == null)2: {3: MessageBox.Show("请首先加载图像!");
4: return;
5: }6: // 准备命令
7: Leadtools.ImageProcessing.Core.DeskewCommand command = new Leadtools.ImageProcessing.Core.DeskewCommand();
8: //图像的倾斜校正
9: command.Flags = DeskewCommandFlags.DeskewImage | DeskewCommandFlags.DoNotFillExposedArea;10: command.FillColor = new Leadtools.RasterColor(255, 255, 255);
11: command.Run(image);12: codecs.Save(image, Path.Combine(Application.StartupPath, @"..\..\Pic\cleanResult.tif"), RasterImageFormat.Tif, 24);
8.编译运行程序,结果如下图所示:
原图:
校正后的图像:
DEMO下载:
本文提供了倾斜校正的所有代码,为了执行Demo,您需要下载LeadTools全功能试用版。
DeskewCommand类的简单介绍
LeadTools提供了Leadtools.ImageProcessing.Core.DeskewCommand类,可以自动拉直扫描的文档,完成倾斜校正。文档图像可以旋转多达20度,这个命令类包含特殊的算法,可以完成银行支票和线条检测倾斜校正的功能。此类在Document\Medical工具包中可用。
若您想要使用上面提到的特殊算法,需将(DeskewCommandFlags.UseCheckDeskew| DeskewCommandFlags.UseLineDetectionCheckDeskew)添加到Flags属性。
注意:
- 若Flags属性或构造函数的flags参数包含DeskewCommandFlags.ReturnAngleOnly,这个命令会在不旋转图像的情况下更新Angle属性。
- 每个方向的计算旋转限制在20度,这个命令主要用于图像,例如扫描的文档,主要为有横线的文本。对于其他类型的图像,结果较难预测。
- 如果角度非常小,这个命令包含了一个选项可以跳过倾斜校正。
- 此命令不支持12位、16位灰度图像和48位、64位彩色图像。为此种情况时,命令不会抛出异常。
- 此命令支持有签名/无签名的数据图像。
- 此命令不支持32为灰度图像
- 此命令已扩展可用于银行支票图像。
若您在使用LeadTools的过程中遇到任何问题,欢迎在葡萄城开发者社区LeadTools板块提问,我们的专业技术团队期待您的到来!