halcon学习菜鸟级笔记---老老实实学例程1Codabar.hdev

来源:互联网 发布:花生壳没有免费域名了 编辑:程序博客网 时间:2024/05/05 08:37
* Read bar codes of type Codabar* create_bar_code_model ([], [], BarCodeHandle)dev_close_window ()dev_open_window (0, 0, 120, 300, 'black', WindowHandle)dev_set_color ('green')dev_set_draw ('margin')dev_set_line_width (3)set_display_font (WindowHandle, 14, 'mono', 'true', 'false')for I := 1 to 6 by 1    read_image (Image, 'barcode/codabar/codabar'+(I$'.2'))    get_image_size (Image, Width, Height)    dev_set_window_extents (0, 0, Width-1, Height-1)    dev_display (Image)    set_bar_code_param (BarCodeHandle, 'check_char', 'present')    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Codabar', DecodedDataStrings)    disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'false')    LastChar := strlen(DecodedDataStrings)-1    disp_message (WindowHandle, DecodedDataStrings{0}+sum(gen_tuple_const(LastChar-1,' '))+DecodedDataStrings{LastChar}, 'window', 12, 12, 'forest green', 'false')    if (I < 6)        stop ()    endifendforclear_bar_code_model (BarCodeHandle)


阅读程序

1、2 *号用来注释语句
3、create_bar_code_model ([], [], BarCodeHandle)
     原型create_bar_code_model( : : GenParamNames, GenParamValues : BarCodeHandle)
     这个算子是为了读取所有支持的条形码而创建一个通用的模型,它的运行结果就是获取条形码模型的句柄(BarCodeHandle),这个句柄的获取是为了用来对此条形码进一步操作的。
通常,条形码不需要其它任何额外的参数进行调整就可以被解码读出,因此,GenParamNames  GenParamValues 默认情况下是为default值,在条形码图像质量很差或者是异常几何特征的情况下,就需要特殊的参数设置来解码并读出值,这些参数可以在创建条形码模型时进行调整,不这样的话,也可以用set_bar_code_param 或者 set_bar_code_param_specific
进行调整。
4.dev_close_window()
原型 dev_close_window( : : : )
这个算子就是关闭所有由dev_open_window 打开的图形窗口,
5、dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
原型dev_open_window( : : Row, Column, Width, Height, Background : WindowHandle)
打开一个新的图新显示窗口,Row,Column, 这两个参数为窗口的坐标Width, Height, 这两个为窗口的大小Background为窗口的背景default值为黑色WindowHandle 窗口句柄。
6、dev_set_color ('green')
原型:dev_set_color( : : ColorName : )
定义用于显示区域XLD或者其他一些几何对象,这个设置一直到下一个dev_set_color才会别改变。
7、dev_set_draw ('margin')
原型:dev_set_draw( : : DrawMode : )
定义区域的填充模式, DrawMode 有'fill', 'margin'前者是填充全部区域,后者是显示边缘,在显示边缘时可以用dev_set_line_width, set_line_approx and set_line_style.来设置边缘线的属性。
8、dev_set_line_width (3)
设置margin下区域边缘线的宽度,单位为像素
9、set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
原型:set_display_font( : : WindowHandle, Size, Font, Bold, Slant : )
用来设置当前窗口的字体属性, WindowHandle,为窗口句柄 Size,是字体的大小 Font,字体 Bold,是否加粗 Slant :是否斜体
一般后面会跟上disp_message, disp_continue_message, set_tposition, write_string 等来使用设置的属性。
11、read_image (Image, 'barcode/codabar/codabar'+(I$'.2'))
原型:read_image( : Image : FileName : )  
读取图像这个算子的关键之处在于如何读取单个,多个图片。图片搜索的目录为环境变量中HALCONIMAGES 指定的路径,也可以自己设定。
12、get_image_size (Image, Width, Height)
原型:get_image_size(Image : : : Width, Height)
这个算子就是取得已读取图片的高宽大小。
13、dev_set_window_extents (0, 0, Width-1, Height-1)
原型:dev_set_window_extents( : : Row, Column, Width, Height : )
在读取了图片的大小后,根据大小通过这个算子可以实现调整用于显示图片的窗口大小,Row, Column, 是图片在窗口中起起点的位置Width, Height :为窗口的大小。
14、dev_display (Image)
原型:dev_display(Object : : : )
此时调整好后,通过此算子显示图片。
15、 set_bar_code_param (BarCodeHandle, 'check_char', 'present')
原型:set_bar_code_param( : : BarCodeHandle, GenParamNames, GenParamValues : )
在第一句时创建了条形码的模型,此时对他进行配置,BarCodeHandle,为已创建模型的句柄 GenParamNames, 要配置的参数名称主要有:'check_char', 'composite_code', 'element_height_min', 'element_size_max', 'element_size_min', 'max_diff_orient', 'meas_thresh', 'meas_thresh_abs', 'min_identical_scanlines', 'num_scanlines', 'orientation', 'orientation_tol', 'persistence', 'start_stop_tolerance', 'stop_after_result_num', 'timeout', 'train'GenParamValues :参数的值。如:0, 0.1, 1, 1.5, 2, 8, 32, 45, 'present', 'absent', 'none', 'CC-A/B', 'no', 'auto', 'high', 'low',此时对'check_char', 设为'present'那么就会检测字符。
16、find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Codabar', DecodedDataStrings)
原型:find_bar_code(Image : SymbolRegions : BarCodeHandle, CodeType : DecodedDataStrings)
这个算子就是用来查找图片中的条形码并且解码读出其中的值,Image :打开的图片 SymbolRegions : 为已经找到的条形码的区域BarCodeHandle, 已创建的条形码模型的句柄CodeType : 要查找的条形码的类别支持的有:'2/5 Industrial', '2/5 Interleaved', 'Codabar', 'Code 39', 'Code 93', 'Code 128', 'EAN-13', 'EAN-13 Add-On 2', 'EAN-13 Add-On 5', 'EAN-8', 'EAN-8 Add-On 2', 'EAN-8 Add-On 5', 'UPC-A', 'UPC-A Add-On 2', 'UPC-A Add-On 5', 'UPC-E', 'UPC-E Add-On 2', 'UPC-E Add-On 5', 'MSI', 'PharmaCode', 'RSS-14', 'RSS-14 Truncated', 'RSS-14 Stacked', 'RSS-14 Stacked Omnidir', 'RSS Limited', 'RSS Expanded', 'RSS Expanded Stacked', 'auto'DecodedDataStrings 读到的条形码值。
17、disp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, 'black', 'false')
原型:disp_message( : : WindowHandle, String, CoordSystem, Row, Column, Color, Box : )
在指定的窗口中显示字符串,WindowHandle, 窗口句柄String,要显示的字符 CoordSystem, 当前的操作系统Row, Column, 窗口中显示的起始坐标Color,字体颜色 Box :是否显示白色的底纹。 
18、 LastChar := strlen(DecodedDataStrings)-1
得出DecodedDataStrings最后一个字符的位置DecodedDataStrings{LastChar}可以访问此字符;
21、stop ()停止程序的执行
24、clear_bar_code_model (BarCodeHandle)
原型:clear_bar_code_model( : : BarCodeHandle : )
清除所建的条形码模型并清楚其占用的内存空间。