ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于Halcon学习的一维码识别【二十九】decode_bar_code_rectangle2.hdev

2022-02-25 22:30:23  阅读:164  来源: 互联网

标签:条形码 code bar Image dev decode rectangle2


此示例演示如何使用运算符decode_bar_code_rectangle2.
通过简单的分割提取条形码区域并将返回的矩形2参数传递给操作者decode_bar_code_rectangle2.


总代码:


* Initialize variables
*初始化变量
Directory := 'barcode/ean13/'
TeaBoxRegExp := '.*tea_box.*'
* 
* Initialize settings
*初始化设置
dev_update_window ('off')
dev_set_draw ('margin')
* 
* Get list of tea_box*-image files
*获取图像文件列表
list_image_files (Directory, 'default', [], ImageFiles)
ImageFilesTea := regexp_select(ImageFiles,[TeaBoxRegExp,'ignore_case'])
*读取图片
read_image (Image, ImageFilesTea[0])
* 
* Prepare graphics window and bar code model
*准备图形窗口和条形码模型
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_line_width (2)
create_bar_code_model ([], [], BarCodeHandle)
* 
* Decode tea_box*-images
*解码茶盒图像
for ImageIndex := 0 to |ImageFilesTea| - 1 by 1
    read_image (Image, ImageFilesTea[ImageIndex])
    dev_display (Image)
    * 
    * segment and determine the bar code region
    **分段并确定条形码区域
    threshold (Image, RegionThresh, 56, 255)
    connection (RegionThresh, RegThreshConn)
    select_shape_std (RegThreshConn, RegionBC, 'max_area', 100)
    * 
    * create input parameters for decode_bar_code_rectangle2
    *为创建decode_bar_code_rectangle2输入参数
    smallest_rectangle2 (RegionBC, Row, Column, Phi, Length1, Length2)
    gen_rectangle2 (Rectangle2BC, Row, Column, Phi, Length1, Length2)
    dev_set_color ('magenta')
    dev_display (Rectangle2BC)
    * 
    * decode_bar_code_rectangle2 directly uses the passed rectangle2 parameters as ROI
    * decode_bar_code_rectangle2 直接使用传递的矩形2参数作为ROI


    decode_bar_code_rectangle2 (Image, BarCodeHandle, 'EAN-13', Row, Column, Phi, Length1, Length2, Decoded)
    get_bar_code_object (SymbolRegions, BarCodeHandle, 'all', 'symbol_regions')
    dev_set_color ('lime green')
    dev_display (SymbolRegions)
    disp_message (WindowHandle, 'Found bar code: ' + Decoded, 'window', 5, 5, 'black', 'true')
    if (ImageIndex < |ImageFilesTea| - 1)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor
clear_bar_code_model (BarCodeHandle)
* 

逐段分析:

*初始化变量
Directory := 'barcode/ean13/'
TeaBoxRegExp := '.*tea_box.*'

*初始化设置
dev_update_window ('off')
dev_set_draw ('margin')

*获取图像文件列表
list_image_files (Directory, 'default', [], ImageFiles)
ImageFilesTea := regexp_select(ImageFiles,[TeaBoxRegExp,'ignore_case'])

*读取图片
read_image (Image, ImageFilesTea[0])

*准备图形窗口和条形码模型
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_line_width (2)

*创建条形码模型句柄
create_bar_code_model ([], [], BarCodeHandle)

*解码图像
for ImageIndex := 0 to |ImageFilesTea| - 1 by 1
    *读取图片
    read_image (Image, ImageFilesTea[ImageIndex])
    dev_display (Image)
    
    *分段并确定条形码区域
    *阈值分割
    threshold (Image, RegionThresh, 56, 255)

    *联通区域
    connection (RegionThresh, RegThreshConn)

    *根绝最大面积特征选择
    select_shape_std (RegThreshConn, RegionBC, 'max_area', 100)

    *求最小外接矩形
    smallest_rectangle2 (RegionBC, Row, Column, Phi, Length1, Length2)

    *生成外接矩形
    gen_rectangle2 (Rectangle2BC, Row, Column, Phi, Length1, Length2)
    
    *设置颜色
    dev_set_color ('magenta')

    *显示矩形
    dev_display (Rectangle2BC)

    * decode_bar_code_rectangle2 直接使用传递的矩形2参数作为ROI
    *解码矩形内的条形码符号。
    decode_bar_code_rectangle2 (Image, BarCodeHandle, 'EAN-13', Row, Column, Phi, Length1, Length2, Decoded)

    *获得条形码的区域
    get_bar_code_object (SymbolRegions, BarCodeHandle, 'all', 'symbol_regions')
    dev_set_color ('lime green')
    dev_display (SymbolRegions)

    *显示信息
    disp_message (WindowHandle, 'Found bar code: ' + Decoded, 'window', 5, 5, 'black', 'true')

    *判断条形码是否循环完
    if (ImageIndex < |ImageFilesTea| - 1)
        disp_continue_message (WindowHandle, 'black', 'true')
        stop ()
    endif
endfor

*释放条形码阅读器分配的内存
clear_bar_code_model (BarCodeHandle)


主要算子解释:

decode_bar_code_rectangle2(Image : : BarCodeHandle, CodeType, Row, Column, Phi, Length1, Length2 : DecodedDataStrings)

功能:解码矩形内的条形码符号。直接扫描提供的区域,以查找条形码。

BarCodeHandle:条形码模型的句柄

CodeType:条形码模型的句柄

Row:中心的行索引

Column:中心的列索引

Phi:矩形的弧度方向

Length1:沿条形码读取方向的矩形长度的一半

Length2 :垂直于条形码读取方向的矩形长度的一半

DecodedDataStrings:所有成功解码条形码的数据字符串

标签:条形码,code,bar,Image,dev,decode,rectangle2
来源: https://blog.csdn.net/BoomBiuBiu/article/details/123141998

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有