halcon实现多个条形码读取功能

*视觉_创建一维码检测模型
create_bar_code_model ('quiet_zone', 'true', BarCodeHandle)
*视觉_设置一维码检测模型参数
set_bar_code_param (BarCodeHandle, 'majority_voting', 'true')
set_bar_code_param (BarCodeHandle, 'element_size_variable', 'true')
set_bar_code_param (BarCodeHandle, 'start_stop_tolerance', 'low')
* 视觉_打开相机
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '34bd20506e13_Hikrobot_MVCS20010GC', 0, -1, AcqHandle)
set_framegrabber_param (AcqHandle, 'color_space', 'gray')
grab_image_start (AcqHandle, -1)
*视觉_启动抓取图像
while (true)
    grab_image_async (Image, AcqHandle, -1)
    * Image Acquisition 01: Do something
    *寻找一维码
    *视觉_获取图像尺寸
    concat_obj (Image, Image, ObjectsConcat)
    
    
    *视觉_获取图像尺寸
    * 图像增强和去噪
    *emphasize(Image, ImageEmphasize, 7, 7, 1)
    *median_image (Image, ImageFiltered, 'square', 1, 'mirrored')
    
    
    get_image_size (Image, Width, Height)
    *视觉_设置窗口局部显示
    *set_part (0, 0, 511, 511)
    *dev_set_part (0, 0, 511, 511)
    *视觉_显示对象
    *disp_obj (ObjectsConcat, [H2D69460])
    *显示条码区域
    *dev_display (SymbolRegions)
    *视觉_寻找一维码
    find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 128', DecodedDataStrings)
   * while (true)
    *    dev_display (SymbolRegions)
    *endwhile
endwhile
*close_framegrabber (AcqHandle)

这段代码是一个用于检测一维码的HALCON视觉程序。它包括了创建和配置一维码检测模型、打开相机、抓取图像以及在一维码检测过程中的一些处理步骤。以下是代码的详细解释:

1. **创建一维码检测模型**:
   ```hdevelop
   create_bar_code_model ('quiet_zone', 'true', BarCodeHandle)
   ```
   这行代码创建了一个一维码检测模型,并启用了“安静区域”选项(`quiet_zone`),这意味着在条码周围需要有一定的空白区域,以便于更准确地检测条码。

2. **设置一维码检测模型参数**:
   ```hdevelop
   set_bar_code_param (BarCodeHandle, 'majority_voting', 'true')
   set_bar_code_param (BarCodeHandle, 'element_size_variable', 'true')
   set_bar_code_param (BarCodeHandle, 'start_stop_tolerance', 'low')
   ```
   这些命令设置了条码检测模型的各种参数:
   - `majority_voting`: 启用多数投票机制以提高检测准确性。
   - `element_size_variable`: 允许条码元素大小变化。
   - `start_stop_tolerance`: 设置起始和停止符的容差为低,意味着对起始和停止符的识别更加严格。

3. **打开相机并配置图像采集**:
   ```hdevelop
   open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '34bd20506e13_Hikrobot_MVCS20010GC', 0, -1, AcqHandle)
   set_framegrabber_param (AcqHandle, 'color_space', 'gray')
   grab_image_start (AcqHandle, -1)
   ```
   这部分代码做了以下几件事:
   - 打开一个GigEVision2协议的相机,并获取其句柄`AcqHandle`。
   - 设置相机的颜色空间为灰度模式。
   - 开始从相机抓取图像。

4. **主循环:持续抓取和处理图像**:
   ```hdevelop
   while (true)
       grab_image_async (Image, AcqHandle, -1)
       get_image_size (Image, Width, Height)
       find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 128', DecodedDataStrings)
   endwhile
   ```
   在这个无限循环中,程序不断地执行以下操作:
   - 异步抓取一张图像到变量`Image`中。
   - 获取图像的尺寸,存储在`Width`和`Height`变量中。
   - 使用之前创建的一维码检测模型,在图像中查找类型为Code 128的一维码,并将结果存储在`SymbolRegions`和`DecodedDataStrings`中。

5. **关闭相机**:
   ```hdevelop
   close_framegrabber (AcqHandle)
   ```
   当程序结束时,这行代码会关闭之前打开的相机。

需要注意的是,代码中的注释部分似乎有一些重复或未完成的内容,比如关于图像增强和去噪的部分被注释掉了。此外,一些显示对象的命令也被注释掉了,因此这些功能目前没有启用。

如果你希望继续开发和完善这个程序,可以根据具体需求取消某些注释,或者添加新的功能来优化条码检测过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小范好好学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值