这个程序演示了GS1数据库条形码的复合元件解码
总代码:
*关闭窗口
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
*
ScaleWindow := 1.0
*
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
*
*
*创建模板
create_bar_code_model ([], [], BarCodeHandle)
set_bar_code_param (BarCodeHandle, 'composite_code', 'CC-A/B')
*
*设置最小的像素值为1.5
set_bar_code_param (BarCodeHandle, 'element_size_min', 1.5)
*
TestParams := []
TestParams := [TestParams,'gs1databar_stacked_composite_01','GS1 DataBar Stacked']
TestParams := [TestParams,'gs1databar_limited_composite_01','GS1 DataBar Limited']
TestParams := [TestParams,'gs1databar_limited_composite_02','GS1 DataBar Limited']
TestParams := [TestParams,'gs1databar_expanded_composite_01','GS1 DataBar Expanded']
*
*
for I := 0 to |TestParams| - 2 by 2
File := 'barcode/gs1databar_composite/' + TestParams[I]
CodeType := TestParams[I + 1]
* 读取图片
read_image (Image, File)
* Compensate for over exposed images: expand dark areas
*补偿过度曝光的图像:扩大黑暗区域
*确定选定遮罩内的最小灰度值
gray_erosion_shape (Image, Image, 1.5, 1.5, 'octagon')
get_image_size (Image, Width, Height)
*设置窗口与图像相适应
dev_set_window_extents (0, 0, ScaleWindow * Width, ScaleWindow * Height)
*显示信息【'条形码类型:'+代码类型】
disp_message (WindowHandle, 'Barcode Type: ' + CodeType, 'window', 12, 12, 'black', 'true')
*
find_bar_code (Image, SymbolRegions, BarCodeHandle, CodeType, DecodedDataStrings)
*
get_bar_code_result (BarCodeHandle, 'all', 'decoded_strings', DecodedStrings)
get_bar_code_result (BarCodeHandle, 'all', 'composite_strings', CompositeStrings)
disp_message (WindowHandle, DecodedStrings + '\nComposite: ' + CompositeStrings, 'image', 36, 12, 'black', 'true')
if (I < |TestParams| - 2)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor
* 清除句柄
clear_bar_code_model (BarCodeHandle)
逐段分析:
*关闭窗口
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
*窗口的缩放因素
ScaleWindow := 1.0
dev_set_draw ('margin')
dev_set_color ('green')
dev_set_line_width (3)
*创建模板
create_bar_code_model ([], [], BarCodeHandle)
set_bar_code_param (BarCodeHandle, 'composite_code', 'CC-A/B')
*设置最小的像素值为1.5
set_bar_code_param (BarCodeHandle, 'element_size_min', 1.5)
TestParams := []
TestParams := [TestParams,'gs1databar_stacked_composite_01','GS1 DataBar Stacked']
TestParams := [TestParams,'gs1databar_limited_composite_01','GS1 DataBar Limited']
TestParams := [TestParams,'gs1databar_limited_composite_02','GS1 DataBar Limited']
TestParams := [TestParams,'gs1databar_expanded_composite_01','GS1 DataBar Expanded']
*循环读取图片
for I := 0 to |TestParams| - 2 by 2
File := 'barcode/gs1databar_composite/' + TestParams[I]
CodeType := TestParams[I + 1]
* 读取图片
read_image (Image, File)
*补偿过度曝光的图像:扩大黑暗区域
*确定选定遮罩内的最小灰度值
gray_erosion_shape (Image, Image, 1.5, 1.5, 'octagon')
get_image_size (Image, Width, Height)
*设置窗口与图像相适应
dev_set_window_extents (0, 0, ScaleWindow * Width, ScaleWindow * Height)
*显示信息【'条形码类型:'+代码类型】
disp_message (WindowHandle, 'Barcode Type: ' + CodeType, 'window', 12, 12, 'black', 'true')
*寻找条形码
find_bar_code (Image, SymbolRegions, BarCodeHandle, CodeType, DecodedDataStrings)
*得到结果
get_bar_code_result (BarCodeHandle, 'all', 'decoded_strings', DecodedStrings)
get_bar_code_result (BarCodeHandle, 'all', 'composite_strings', CompositeStrings)
*显示信息
disp_message (WindowHandle, DecodedStrings + '\nComposite: ' + CompositeStrings, 'image', 36, 12, 'black', 'true')
if (I < |TestParams| - 2)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor
* 清除句柄
clear_bar_code_model (BarCodeHandle)
get_bar_code_result——获取条形码符号解码过程中累积的字母数字结果
decoded_strings:
以人类可读格式的字符串形式返回解码结果。此解码字符串可以针对单个结果返回,例如,对于CandidateHandle 0,或者在CandidateHandle设置为“all”时同时针对所有结果返回。请注意,解码字符串中只包含数据字符。不包括开始、停止和检查字符。对于可选的检查字符,其行为取决于“check_char”参数的值。
composite_strings:
返回GS1复合组件的解码字符串。有关更多详细信息,请参阅set_bar_code_param参数“composite_code”的说明。