halcon 检测大米个数

本文介绍了一种使用Halcon进行图像处理的方法,通过读取图像、阈值分割、连接区域、计数对象等步骤,实现了对稻米颗粒的有效检测和标记。详细展示了如何通过编程实现对图像中较小目标的直接标记以及对较大目标进行形态学操作后的分割标记。
read_image (Image, 'rice')
illuminate (Image, ImageIlluminate, 101, 101, 0.7)
invert_image (ImageIlluminate, ImageInvert)
set_window_param (3600, 'background_color', 'black')
binary_threshold (ImageInvert, Region, 'max_separability', 'dark', UsedThreshold)
connection (Region, ConnectedRegions)
count_obj (ConnectedRegions, Number)
area_center (ConnectedRegions, Area, Row, Column)
tuple_max (Area, Max)

disp_image (Image, 3600)
i:=1
MaxArea:=Max*0.6 
for Index := 1 to Number by 1
    select_obj (ConnectedRegions, ObjectSelected, Index)
    area_center (ObjectSelected, SmallArea, Row, Column)
    if (SmallArea <= MaxArea)
        disp_message (3600, i, 'image', Row, Column, 'black', 'false')
        i:=i+1
    else
        opening_circle (ObjectSelected, RegionOpening, 3.5)
        erosion_circle (RegionOpening, RegionErosion, 1.5)
        connection (RegionErosion, ConnectedRegions1)
        count_obj (ConnectedRegions1, Number2)
        for Index1 := 1 to Number2 by 1
            select_obj (ConnectedRegions1, ObjectSelected1, Index1)
            area_center (ObjectSelected1, Area1, Row1, Column1)
            disp_message (3600, i, 'image', Row1, Column1, 'black', 'false')
            i:=i+1
        endfor
    endif
    stop ()
endfor

 

### 使用Halcon进行深度学习目标检测并统计检测到的目标数量 #### 创建和训练模型 为了在 Halcon 中执行深度学习对象检测,通常会先创建或加载预训练的神经网络模型。如果选择微调现有模型,则可以按照特定应用调整最后一层分类器而不改变特征提取部分[^3]。 对于三维物体识别任务来说,一些方法跟随二维物体检测的成功经验,并基于三维提议网络及其分类而构建[^2];然而,在 Halcon 的环境中主要还是处理二维图像数据。 ```cpp // 加载预先训练好的模型文件 (.hdl 或 .ilp 文件) read_dl_model ('Path_to_pretrained_model', 'ModelHandle') ``` #### 准备输入图片 接着准备待分析的图像作为输入给定至已建立之深度学习框架内: ```cpp // 读取测试图像 read_image (Image, 'path/to/image') // 如果必要的话,对图像做一些前处理操作比如缩放尺寸等 scale_image (Image, ImageScaled, ScaleX, ScaleY) ``` #### 执行推理过程 利用 `classify_object_dl` 命令来运行推断流程,这一步骤将会返回一系列矩形框包围着可能存在的各个实例连同其类别标签与置信度得分一起输出。 ```cpp // 对单张或多张图像实施预测动作 classify_object_detection_deep_learning (ModelHandle, ImageScaled, ResultHandle) // 获取结果中的边界框信息和其他属性 get_object_info2 (ResultHandle, RowBegin, ColumnBegin, RowEnd, ColumnEnd, Confidence, ClassID) ``` #### 统计被发现的对象数目 最后通过计算所获得的结果集中有效条目的总数即可得知实际探测出来的个体数。 ```cpp // 计算检测到的对象的数量 count_obj := |RowBegin| // 这里假设所有的数组长度相同且代表了有效的检测结果 ``` 以上就是如何运用 HALCON 实现深度学习下的目标检测工作流概览以及怎样确定最终得到的目标个数的方法介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值