• Halcon WPF 开发学习笔记(1):Hello World小程序


    文章专栏

    Halcon开发

    视频链接

    机器视觉之C#联合Halcon 第一个Halcon小程序

    Hello World

    训练图片

    在这里插入图片描述

    训练目的

    找到右下角的圆心,并且使用十字叉进行标注

    开始训练

    图像预处理

    导入图像

    在这里插入图片描述
    在这里插入图片描述

    三通道处理

    在这里插入图片描述
    我们一般会将图像分为三通道图像,选择对比最强烈的作为图像处理的图片。

    调用算子

    在这里插入图片描述
    算子简单来说就是调用函数库的方法。

    *图像三通道处理
    decompose3 (KO5NHB29v5Qbj95u, Image_r, Image_g, Image_b)
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

    通道选取

    通道选取的逻辑是选择对比度最高的通道。我们这里选择三通道。如何选取我感觉比较玄学
    在这里插入图片描述

    滤波

    滤波就是用来过度杂项信息的。滤波别人都给我们写好了,我们的目标是右下角的圆形图案,所以是圆形滤波。

    
    *进行圆形滤波
    median_image (Image_b, ImageMedian, 'circle', 5, 'mirrored')
    
    • 1
    • 2
    • 3
    什么是好的滤波

    将不需要的细节去掉,需要的细节保留的滤波就是我们需要的滤波
    在这里插入图片描述

    在这里插入图片描述
    图2就比图1好,因为图2没有线条,而且对比度强。黑色是板子,白色是圆点。

    增加对比度

    *增强对比度,为什么是1.8?都是试出来的,都是玄学
    scale_image (ImageMedian, ImageScaled, 1.8, 0)
    
    • 1
    • 2

    在这里插入图片描述

    区域选取

    阈值处理

    *阈值分割
    binary_threshold (ImageScaled, Region, 'max_separability', 'dark', UsedThreshold)
    
    • 1
    • 2
    算子参数选择

    在这里插入图片描述
    在这里插入图片描述

    运行结果(红色为选择区域)

    在这里插入图片描述

    记得每一步都要保存,我就是没保存然后突然闪退了

    区域分割

    由于红色的区域还是太多了,这里还要继续分割

    *区域分割
    connection (Region, ConnectedRegions)
    
    • 1
    • 2
    运行结果

    在这里插入图片描述
    选择封闭连通平面,有点想世界地图的四色猜想一样,将红色部分进行分割

    特征筛选

    我们已经很解决目标了,只要将彩色部分进行筛选即可

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    参数代码

    *特征筛选
    select_shape (ConnectedRegions, SelectedRegions, 'circularity', 'and', 0.95841, 1)
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述
    不清楚需要点击左上角Clean是特性还是Bug

    在这里插入图片描述

    第二次,面积筛选

    过程不再描述

    *面积筛选
    select_shape (SelectedRegions, SelectedRegions1, 'area', 'and', 159.52, 172.83)
    
    • 1
    • 2

    在这里插入图片描述

    画选中十字线

    剩下代码没有难点,不再解析

    *-----画选取十字线-----
    
    *中心坐标
    area_center (SelectedRegions1, Area, Row, Column)
    
    
    *新窗口打开
    dev_open_window_fit_image (ImageScaled, 0, 0, -1, -1, WindowHandle)
    
    *重新添加原始图片 
    dev_display (CirclImg)
    *添加十字坐标
    disp_cross (WindowHandle, Row, Column, 20, 0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    运行结果

    *---------------图像预处理---------
    *导入图片
    read_image (CirclImg, 'D:/train/Halcon训练图片/K(@O5{N($H$B29V5`QBJ95U.png')
    
    *图像三通道处理
    decompose3 (CirclImg, Image_r, Image_g, Image_b)
    
    *进行圆形滤波
    median_image (Image_b, ImageMedian, 'circle', 5, 'mirrored')
    
    *图像锐化
    scale_image (ImageMedian, ImageScaled, 1.8, 0)
    
    *-------图像选取--------
    *阈值处理
    binary_threshold (ImageScaled, Region, 'smooth_histo', 'light', UsedThreshold)
    
    *区域分割
    connection (Region, ConnectedRegions)
    
    *---特征筛选----
    
    *圆度筛选
    select_shape (ConnectedRegions, SelectedRegions, 'circularity', 'and', 0.95841, 1)
    
    *面积筛选
    select_shape (SelectedRegions, SelectedRegions1, 'area', 'and', 159.52, 172.83)
    
    
    
    *-----画选取十字线-----
    
    *中心坐标
    area_center (SelectedRegions1, Area, Row, Column)
    
    
    *新窗口打开
    dev_open_window_fit_image (ImageScaled, 0, 0, -1, -1, WindowHandle)
    
    *重新添加原始图片 
    dev_display (CirclImg)
    *添加十字坐标
    disp_cross (WindowHandle, Row, Column, 20, 0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    在这里插入图片描述

  • 相关阅读:
    element的表格中添加复制文字操作
    Seata之@GlobalTransactional验证
    Python实践:脚本调用exe与exe输出获取的方法总结
    【网络安全】-网络安全的分类详解
    多路查找树
    用python把所有出现snprintf的c文件添加_snprintf
    saas化多租户-动态数据源
    OpenGL笔记九之彩色三角形与重心插值算法
    操作系统概念 进程
    信息安全服务CCRC认证申报的完整流程
  • 原文地址:https://blog.csdn.net/qq_44695769/article/details/134253829