L_CompareBitmap

# include“l_bitmap.h”

L_LTIMGCOR_APIL_INTL_CompareBitmap (pReferenceBitmap、pModifiedBitmap pOutputBitmap、pAlignment pOptions)

比较两个图片的添加、删除和更改,并生成一个图像差异突出显示。

参数

pBITMAPHANDLEpReferenceBitmap

指针参考(原始)位图

pBITMAPHANDLEpModifiedBitmap

指针修改后的位图

pBITMAPHANDLEpOutputBitmap

指针指向一个位图填充比较结果。有关更多信息,请参见下面的评论。

L_MATRIX* pAlignment

可选指针指向一个变换矩阵用于覆盖修改后的位图到参考图。如果传递,不会执行转换和图像将左上的对齐。

pCOMPAREOPTIONSpOptions

指针指向的比较选择。

返回

价值 意义
成功 函数是成功的。
< 1 一个错误发生。指返回代码

评论

输出图像(pOutputBitmap3)将每像素色彩位数。前六项的调色板的填充COMPAREOPTIONS结构(pOptions):

指数 价值
0 pOptions - > crOutputExternal
1 pOptions - > crOutputBackground
2 pOptions - > crOutputMatch
3 pOptions - > crOutputAddition
4 pOptions - > crOutputDeletion
5 pOptions - > crOutputChange

必需的dll和库

平台

Win32 x64, Linux。

例子

这个例子展示了如何比较图像的修改和旋转的版本。

L_INT CompareBitmapExample (L_VOID){L_INT nRet =成功;BITMAPHANDLE ReferenceBitmap = {0};/ /原始图像BITMAPHANDLE ModifiedBitmap = {0};/ /修改后的图像BITMAPHANDLE OutputBitmap = {0};/ /生成的图像COMPAREOPTIONS选项= {0};/ /比较选择L_MATRIX对齐= {0};/ /修改图像对齐的转换L_RECT RemoveRect = {0};/ /删除从一个图像/ /加载原始图像nRet = L_LoadBitmap (MAKE_IMAGE_PATH(文本(“ocr1.tif”&ReferenceBitmap)),运算符(BITMAPHANDLE), 0 ORDER_BGRORGRAY空,空);如果(nRet ! =成功)转到清理;/ /使用相同的图像“修改”的形象nRet = L_CopyBitmap (&ModifiedBitmap &ReferenceBitmap,运算符(BITMAPHANDLE));如果(nRet ! =成功)转到清理;/ /删除最后一段的参考图像L_Rect_Make (&RemoveRect、290、2470、1930、360);nRet = L_SetBitmapRgnRect (&ReferenceBitmap, NULL, &RemoveRect L_RGN_SET);如果(nRet ! =成功)转到清理;nRet = L_FillBitmap (&ReferenceBitmap RGB (255、255、255));如果(nRet ! =成功)转到清理;nRet = L_FreeBitmapRgn (&ReferenceBitmap);如果(nRet ! =成功)转到清理;/ /删除标题从修改后的图像L_Rect_Make (&RemoveRect、290、300、810、110);nRet = L_SetBitmapRgnRect (&ModifiedBitmap, NULL, &RemoveRect L_RGN_SET);如果(nRet ! =成功)转到清理;nRet = L_FillBitmap (&ModifiedBitmap RGB (255、255、255));如果(nRet ! =成功)转到清理;nRet = L_FreeBitmapRgn (&ModifiedBitmap);如果(nRet ! =成功)转到清理;/ /修改后的图像旋转演示(学位)百分之角测量nRet = L_RotateBitmap (340 * 100, &ModifiedBitmap ROTATE_RESIZE, RGB (0, 0, 0));如果(nRet ! =成功)转到清理;/ /更新转换上面对齐/反向旋转L_Matrix_Identity(对齐);-ModifiedBitmap L_Matrix_Translate(对齐。宽* 0.5,-ModifiedBitmap。高* 0.5);L_Matrix_Rotate(对齐,20.0);ReferenceBitmap L_Matrix_Translate(对齐。宽* 0.5,ReferenceBitmap。高* 0.5);/ /设置的比较选择选项。uStructSize =运算符(COMPAREOPTIONS);选项。uThreshold = 0;/ /图像双调的,不需要测量颜色的距离选项。crReferenceBackground = RGB (255、255、255);/ /白色选项。crReferenceForeground = RGB (0, 0, 0);/ /黑色选项。crModifiedBackground = RGB (255、255、255);/ /白色选项。crModifiedForeground = RGB (0, 0, 0);/ /黑色选项。crOutputExternal = RGB (128、128、255);/ /浅蓝色选项。crOutputBackground = RGB (255、255、255);/ /白色选项。crOutputMatch = RGB (64、64、64);/ /深灰色选项。crOutputAddition = RGB (0 255 0);/ /绿色选项。crOutputDeletion = RGB (255, 0, 0);/ /红色选项。crOutputChange = RGB (255、255、0);/ /黄色/ /比较图像nRet = L_CompareBitmap (&ReferenceBitmap &ModifiedBitmap &OutputBitmap,对齐,选择);如果(nRet ! =成功)转到清理;/ /保存结果nRet = L_SaveBitmap (MAKE_IMAGE_PATH(文本(“CompareBitmap_Output.png”)),&OutputBitmap FILE_PNG 0, 0,零);如果(nRet ! =成功)转到清理;/ /保存两个输入图片,以供参考nRet = L_SaveBitmap (MAKE_IMAGE_PATH(文本(“CompareBitmap_Reference.png”)),&ReferenceBitmap FILE_PNG 0, 0,零);如果(nRet ! =成功)转到清理;nRet = L_SaveBitmap (MAKE_IMAGE_PATH(文本(“CompareBitmap_Modified.png”)),&ModifiedBitmap FILE_PNG 0, 0,零);如果(nRet ! =成功)转到清理;清理:/ /自由加载图片如果(ReferenceBitmap.Flags.Allocated)L_FreeBitmap (&ReferenceBitmap);如果(ModifiedBitmap.Flags.Allocated)L_FreeBitmap (&ModifiedBitmap);如果(OutputBitmap.Flags.Allocated)L_FreeBitmap (&OutputBitmap);返回nRet;}

引用、修改和输出图像

以下图片是运行时生成的示例:

LEADTOOLS光栅成像C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。