# include“l_bitmap.h”
L_LTIMGCOR_APIL_INTL_CompareBitmap (pReferenceBitmap、pModifiedBitmap pOutputBitmap、pAlignment pOptions)
比较两个图片的添加、删除和更改,并生成一个图像差异突出显示。
指针参考
(原始)位图
。
指针修改后的位图
。
指针指向一个位图填充比较结果。有关更多信息,请参见下面的评论。
可选指针指向一个变换矩阵用于覆盖修改后的位图到参考图。如果零
传递,不会执行转换和图像将左上的对齐。
指针指向的比较选择。
价值 | 意义 |
---|---|
成功 | 函数是成功的。 |
< 1 | 一个错误发生。指返回代码。 |
输出图像(pOutputBitmap
3)将每像素色彩位数。前六项的调色板的填充COMPAREOPTIONS结构(pOptions
):
指数 | 价值 |
---|---|
0 | pOptions - > crOutputExternal |
1 | pOptions - > crOutputBackground |
2 | pOptions - > crOutputMatch |
3 | pOptions - > crOutputAddition |
4 | pOptions - > crOutputDeletion |
5 | pOptions - > crOutputChange |
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;
}
以下图片是运行时生成的示例:
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗Web查看器net
188宝金博怎么下载
支持的平台上
net, Java, Android和iOS / macOS组件
C / c++类库的API
HTML5 JavaScript库
你的邮件已经发送到支持!有人应该联系!如果你的问题是紧急请回到聊天。
聊天时间:
周一——周五,上午6点等
谢谢你的反馈!
请填写表单重新开始一个新的聊天。
所有代理目前离线。
聊天时间:
周一-周五
早上8:30 - 6点
联系我们请填写这张表格,我们将通过电子邮件联系你。