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

* 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 ()
    endif
endfor
clear_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   : )
清除所建的条形码模型并清楚其占用的内存空间。

你可能感兴趣的:(机器视觉)