L_DeskewBitmap

# include“l_bitmap.h”

L_LTIMGCOR_APIL_INTL_DeskewBitmap(pBitmap, pnAngle, crBack, uFlags)

旋转指定的位图以使其平直。通常这个函数用于自动矫正扫描图像。

此函数包含用于检测倾斜检查的特殊算法。有关更多信息,请参阅下面的评论部分。

参数

pBITMAPHANDLEpBitmap

指向位图句柄的指针,该句柄引用要伸直的位图。

L_INT* pnAngle

NULL或要用函数旋转图像的量更新的变量的地址。旋转的量以百分之一度表示。例如,500表示顺时针5度。如果不需要检查旋转量,则传递NULL。取值范围为-2000 ~ 2000。

也就是说crBack

用于填充旋转后背景的颜色。只有在设置了DSK_FILL时才使用uFlags

L_UINTuFlags

标志,指示是否对图像进行去角处理以及使用什么背景色。您可以使用按位或(|)从每个组指定一个标志。

价值 意义
在找到倾斜角度后对图像进行倾斜
DSKW_PROCESS [0x00000000]旋转图像
DSKW_NOPROCESS [0x00000001]不要旋转图像。通常这个标志是用来发现旋转角度。
要使用的背景色
DSKW_FILL [0x00000000]使用颜色crBack通过旋转填充暴露的区域。
DSKW_NOFILL [0x00000010]让函数自动找到合适的背景色来填充旋转暴露的区域。在这种情况下,crBack被忽略。
图像类型
DSKW_DOCUMENTIMAGE [0x00000000]图像只包含文本。
DSKW_DOCUMENTANDPICTURE [0x00010000]图像包含文本和图片,或浅色文本。
要执行的插值类型
DSKW_LINEAR [0x00000000]旋转时不插补。
DSKW_RESAMPLE [0x00001000]旋转时进行双线性插值。
DSKW_BICUBIC [0x00002000]旋转时进行双三次插值。
旋转型
DSKW_NORMALSPEEDROTATE [0x00000000]以正常速度旋转图像,旋转质量高
DSKW_HIGHSPEEDROTATE [0x00100000]以中等旋转质量加速图像旋转(仅适用于1位图像)
执行预处理以增强结果
DSKW_PERFORM_PREPROCESSING [0x00000000]执行预处理操作。将此方法用于扫描结果为黑色边框的图像,以提高准确性。仅适用于1位文档图像。
DSKW_DONT_PERFORM_PREPROCESSING [0x10000000]不做预处理操作。
检测倾斜角度
DSKW_SELECTIVE_DETECTION [0x00000000]利用文档的重要特征有选择地检测倾斜角度,以提高准确性仅适用于1位文档图像。
DSKW_NORMAL_DETECTION [0x20000000]正常使用文档的所有特性检测倾斜角度
使用银行支票算法进行去倾斜
DSKW_DONT_USE_CHECK_DESKEW [0x00000000]不要使用任何银行支票算法。执行普通去角。这是默认值。
DSKW_USE_CHECK_DESKEW [0x01000000]使用银行支票算法翻转位图该算法考虑了标准银行支票的许多共同特征,以确定方向。
DSKW_USE_CHECK_DESKEW_DETECT_LINES [0x02000000]使用银行支票线检测算法对图像进行倾斜。

返回

价值 意义
成功 活动很成功。
< 1 发生错误。指返回代码

评论

此函数包含用于检测倾斜检查的特殊算法。的XX_CHECK_DESKEW_XX标志指定uFlags参数。

此函数不支持签名数据映像。如果将签名数据图像传递给该函数,则返回错误代码ERROR_SIGNED_DATA_NOT_SUPPORTED。

如果uFlags包含DSKW_NOPROCESS,函数将更新pnAngle使用倾斜角度,不旋转图像。

计算的旋转在任何方向上都被限制在20度。此函数适用于图像,例如扫描的文档,这些图像主要是水平的文本行。其他类型的图像的结果难以预测。

若要在执行此函数期间更新状态栏或检测用户中断,请参阅L_SetStatusCallback

此功能不支持12位和16位灰度以及48位和64位彩色图像。如果图像灰度为12位和16位,颜色为48位和64位,该函数将不会返回错误。

此函数不支持32位灰度图像。如果将32位灰度图像传递给该函数,则返回错误代码ERROR_GRAY32_UNSUPPORTED。

必需的dll和库

平台

Win32, x64, Linux。

另请参阅

功能

主题

例子

要获得完整的示例代码,请参考DEMO示例的childc模块。
下面的例子加载一个位图并将其拉直。

L_INT DeskewBitmapExample (L_VOID){L_INT nRet;BITMAPHANDLE LeadBitmap;/*存放加载图像的位图句柄。* //*加载位图,保持文件的每像素位nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT(“IMAGE1。CMP”&LeadBitmap)),运算符(bitmaphandle), 0, order_bgr, null, null);如果(nRet ! =成功)返回nRet;/*倾斜位图*/nRet = L_DeskewBitmap(&LeadBitmap, NULL, 0, DSKW_PROCESS | DSKW_NOFILL | DSKW_DOCUMENTIMAGE);如果(nRet ! =成功)返回nRet;L_SaveBitmap(MAKE_IMAGE_PATH(TEXT)“Result.BMP”)), &LeadBitmap, FILE_BMP, 24, 0, NULL);如果(nRet ! =成功)返回nRet;/ /免费的位图如果(LeadBitmap.Flags.Allocated)L_FreeBitmap (&LeadBitmap);返回成功;}

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。