第一步:create_bar_code_model( : : GenParamNames, GenParamValues : BarCodeHandle)
例如:create_bar_code_model([ ],[ ],BarCodeHandle)
此步骤的主要目的是创建一个用来读取条形码的模板,这是读取条形码的最先决的条件,该函数返回模板的句柄,后续的其他操作都是以这个句柄为基础的。
第二步:set_bar_code_param( : : BarCodeHandle, GenParamNames, GenParamValues : )
此步骤是用来设置模板的参数的,为下一步读取条形码做准备。此设置可以为条形码基础尺寸、扫描设置、在图像中条形码的出现、条形码特殊值设置、训练及其他五花八门的设置等
Size of bar code elements 条形码基础尺寸设置可以为'element_size_min':,'element_size_max':,'element_height_min':
Scanning setting扫描设置:
条形码特殊值设置Bar code specific values: 有两类:'check_char':和'composite_code':
'check_char'设置的是字符是否有效。当值设置为'present'时候,则只有当所有的检查都正确,才会输出;当设置为'absent'时候,则只要解码成功就会输出;
'composite_code'设置的是是否检测混合码。当值设为'none'时候,不检查混合码,直接读取;当值设为'CC-A/B',则检查读取混合码。此设置只针对RSS类型的条码
Trainning 训练:通过一个或几个图像,来设置读取模板的参数
训练的注意事项:
a,训练之前,手动设置不需要训练的参数(如'check_char')
b,当用图来做训练的时候,对每一个样图都要调用find_bar_code(此函数的功能是检测盒读取条码特征)
c,每张图上必须只有一种条码是可见的,避免混淆;当一张样图中出现多个条码时候,使用reduce_domain.(分割区域的意思)
d,当样图都相似的时候,一个图像即可满足要求,可以求出模板的各种基本尺寸'element_size_min', 'element_size_max','meas_thresh', ‘meas_thresh_abs','max_diff_orient'.;对于'orientation',则最少需要两幅图来确定最小和最大的orientation'
e,当在element尺寸没有确定的应用中,必须训练最小最大的特征。如果不能保证的话,则需要手动来设置或者是完全从训练的图中来计算
f,当第一次调用find_bar_code之后,被检测的条码中的特征参数就被得到了。后面再调用find_bar_code函数时候,则是扩展这些参数,使其包含各种样图中的特征
g,当使用足够多的训练图之后,使用query_bar_code_params 可以检测到产生的值并可以运用到set_bar_code and get_bar_code。使用get_bar_code_param_specific and get_bar_code_param. 可以恢复参数
h,为了结束训练,可以使用Set_bar_code_parm(:train,all)来从训练中除去参数。相对的,对于已经存在的条码模型,可以使用clear_bar_code_model除去
i,训练过程中,参数不能通过set_bar_code_param or set_bar_code_param_specific来明确设置。若是调用这些函数设置的话,则在每次调用find_bar_code时候就会取代上一次的值
j,可以使用输出参数DecodedDataStrings or SymbolRegions来检测训练是否成功
第三步:find_bar_code(Image : SymbolRegions : BarCodeHandle, CodeType : DecodedDataStrings)
Image:输入图像
SymbolRegions:输出图像区
BarCodeHandle:条码模板句柄
CodeType:条码类型
DecodedDataStrings:解码后的值