# include“l_bitmap.h”
L_LTIMGCOR_APIL_INTL_FindCandidateFormFields (pBitmap pOptions pOutputs)
从位图提取候选表单字段使用各种选项。有两个主要类型的字段:文本字段和有机磁共振字段。
位图句柄指针引用处理位图。
领域检测选项。这个值不能为空。
指针与提取的字段被更新。
价值 | 意义 |
---|---|
成功 | 函数是成功的。 |
< 1 | 一个错误发生。指返回代码。 |
抗扭斜图像首先,如果它是倾斜的。
L_FindCandidateFormFields支持8位,12位和16位灰度图像,支持24位,32位,48比特位和64位彩色图像。
L_FindCandidateFormFields不支持设置矩形区域。
L_FindCandidateFormFields不支持32位灰度图像。它返回错误代码ERROR_GRAY32_UNSUPPORTED如果一个32位的灰度图像是传递给这个函数。
Win32 x64, Linux。
从位图提取候选表单字段使用各种选项。
L_INT FindCandidateFormFieldsExample (L_VOID)
{
L_INT nRet =成功;
BITMAPHANDLE InputBitmap = {0};
FIND_CANDIDATE_FORM_FIELDS_OPTIONS选项;
FIND_CANDIDATE_FORM_FIELDS_OUTPUTS * pOutputs =零;
也就是说红= RGB (255, 0, 0);
也就是说青色= RGB (0255255);
也就是说蓝= RGB (0, 0255);
也就是说绿色= RGB (0255 0);
选项。uVerticalLineMinimumLength = 3;
选项。uHorizontalLineMinimumLength = 10;
选项。uStructSize =运算符(FIND_CANDIDATE_FORM_FIELDS_OPTIONS);
L_TCHAR szBuffer1 [100];
wsprintf (szBuffer1文本(“D: \ \ \ \有机磁共振\ \ 300 _omr_sample.tif”形式));
nRet = L_LoadBitmap (szBuffer1 &InputBitmap,
运算符(BITMAPHANDLE), 0 ORDER_BGRORGRAY空,空);
nRet = L_FindCandidateFormFields(选项,&InputBitmap &pOutputs);
如果(nRet ! =成功)
{
转到清理;
}
L_HDC hDC =零;
HPEN HPEN =零;
/ /标准化图纸
如果(pBitmap - > ViewPerspective ! = TOP_LEFT)
{
nRet = L_ChangeBitmapViewPerspective (pBitmap pBitmap,运算符(BITMAPHANDLE) TOP_LEFT);
如果(nRet ! =成功)
转到清理;
}
如果(pBitmap - > BitsPerPixel ! = 24)
{
nRet = L_ColorResBitmap (pBitmap pBitmap,运算符CRF_BYTEORDERBGR (BITMAPHANDLE), 24日,空,空,0,空,空);
如果(nRet ! =成功)
转到清理;
}
/ /开始画的形象
hDC = L_CreateLeadDC (pBitmap);
如果(hDC = = NULL)
转到清理;
/ /不填
SelectObject (hDC GetStockObject (NULL_BRUSH));
为(L_UINT我= 0;我< pOutputs - > TextFields.uCount;我+ +)
{
矩形矩形= pOutputs - > TextFields.pTextFieldAreas[我].rcBounds;
也就是说颜色= (pOutputs - > TextFields.pTextFieldAreas[我]。uFieldType = = TEXT_FIELD_TYPE_BOX) ?青色:蓝色;
hPen = CreatePen (PS_SOLID 2颜色);
如果(hPen = = NULL)
转到清理;
SelectObject (hDC hPen);
矩形(hDC、rect.left rect.top、rect.right rect.bottom);
DeleteObject (hPen);
矩形= pOutputs - > TextFields.pTextFieldAreas[我].rcFilledAreaBounds;
颜色=红;
DeleteObject (hPen);
hPen = CreatePen (PS_SOLID 2颜色);
如果(hPen = = NULL)
转到清理;
SelectObject (hDC hPen);
矩形(hDC、rect.left rect.top、rect.right rect.bottom);
DeleteObject (hPen);
}
也就是说颜色=绿色;
hPen = CreatePen (PS_SOLID 2颜色);
如果(hPen = = NULL)
转到清理;
SelectObject (hDC hPen);
为(L_UINT我= 0;我< pOutputs - > OMRFields.uCount;我+ +)
{
矩形矩形= pOutputs - > OMRFields.pOMRFieldAreas[我].rcUnfilledBound;
如果(pOutputs - > OMRFields.pOMRFieldAreas[我]。uFieldType = = OMR_FIELD_TYPE_BOX)
{
矩形(hDC、rect.left rect.top、rect.right rect.bottom);
}
其他的
{
椭圆(hDC、rect.left rect.top、rect.right rect.bottom);
}
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
清理:
如果(hPen ! = NULL)
DeleteObject (hPen);
如果(hDC ! = NULL)
L_DeleteLeadDC (hDC);
/ /自由加载图片
如果(InputBitmap.Flags.Allocated)
L_FreeBitmap (&InputBitmap);
/ /自由的结果
L_FindCandidateFormFieldsFree (&pOutputs);
返回nRet;
}