小哥哥小姐姐觉得有用点个赞呗!

HALCON示例程序rim.hdev轮圈孔检测提取字符

示例程序源码(加注释)

  • 关于显示类函数解释
    dev_update_off ()
    dev_close_window ()
    dev_open_window (0, 0, 768, 576, ‘black’, WindowID)
    set_display_font (WindowID, 16, ‘mono’, ‘true’, ‘false’)
    read_image (Rim, ‘rim’)
    dev_display (Rim)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 二值化
    threshold (Rim, Dark, 0, 128)
    dev_display (Rim)
    dev_set_color (‘green’)
    dev_set_draw (‘fill’)
    dev_display (Dark)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 分割连通域
    connection (Dark, DarkRegions)
  • 使用圆度与面积筛选区域
    select_shape (DarkRegions, Circles, [‘circularity’,‘area’], ‘and’, [0.85,50], [1.0,99999])
    dev_display (Rim)
    dev_set_colored (12)
    dev_display (Circles)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 使用圆形膨胀
    dilation_circle (Circles, ROIOuter, 8.5)
  • 使用圆形腐蚀
    erosion_circle (Circles, ROIInner, 8.5)
  • 求不同
    difference (ROIOuter, ROIInner, ROI)
  • 合并区域
    union1 (ROI, ROIEdges)
    dev_display (Rim)
    dev_set_draw (‘margin’)
    dev_set_line_width (3)
    dev_set_color (‘green’)
    dev_display (ROIEdges)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 缩减定义域,求取边缘
    reduce_domain (Rim, ROIEdges, RimReduced)
    edges_sub_pix (RimReduced, Edges, ‘canny’, 4, 20, 40)
  • 筛选边缘
    select_contours_xld (Edges, RelEdges, ‘length’, 30, 999999, 0, 0)
    dev_display (Rim)
    dev_set_colored (12)
    dev_display (RelEdges)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 拟合椭圆
    fit_ellipse_contour_xld (RelEdges, ‘ftukey’, -1, 2, 0, 200, 3, 2, Row, Column, Phi, Ra, Rb, StartPhi, EndPhi, PointOrder)
    display_ellipses (Rim, Row, Column, Phi, Ra, Rb, WindowID)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 使用高斯平滑滤波
    gauss_filter (Rim, RimGauss, 11)
  • 动态阈值分割区域
    dyn_threshold (Rim, RimGauss, SmallAndDarkerRegion, 5, ‘dark’)
    dev_display (Rim)
    dev_set_draw (‘fill’)
    dev_set_color (‘green’)
    dev_display (SmallAndDarkerRegion)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 分割连通域
    connection (SmallAndDarkerRegion, SmallAndDarker)
  • 通过面积筛选区域
    select_shape (SmallAndDarker, CharCandidates, ‘area’, ‘and’, 40, 400)
  • 使用长短轴筛选区域
    select_shape (CharCandidates, PossibleChar, [‘ra’,‘rb’], ‘and’, [10,5], [20,30])
    dev_display (Rim)
    dev_set_colored (12)
    dev_display (PossibleChar)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 合并区域
    union1 (PossibleChar, ROI)
  • 使用圆形元素进行闭运算
    closing_circle (ROI, CharRegion, 17.5)
  • 分割连通域
    connection (CharRegion, CharBlocks)
    dev_display (Rim)
    dev_set_draw (‘margin’)
    dev_display (CharBlocks)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 使用面积对区域进行筛选
    select_shape (CharBlocks, CharRegion, ‘area’, ‘and’, 400, 99999)
  • 对区域进行型转变换,求取最小外接矩形
    shape_trans (CharRegion, ROIChar, ‘rectangle2’)
    dev_display (Rim)
    dev_set_color (‘green’)
    dev_display (ROIChar)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
    display_ellipses (Rim, Row, Column, Phi, Ra, Rb, WindowID)
  • 求取交集
    intersection (CharCandidates, ROIChar, Characters)
    dev_set_colored (12)
    dev_display (Characters)
  • 求最小外接矩形
    smallest_rectangle2 (ROIChar, RowChar, ColumnChar, PhiChar, Length1Char, Length2Char)
  • 创建标准转换矩阵
    hom_mat2d_identity (HomMat2DIdentity)
  • 旋转
    hom_mat2d_rotate (HomMat2DIdentity, rad(180) - PhiChar, RowChar, ColumnChar, HomMat2DRotate)
  • 平移
    affine_trans_region (Characters, CharRotated, HomMat2DRotate, ‘constant’)
  • 进行仿射变换
    affine_trans_image (Rim, RimRotated, HomMat2DRotate, ‘weighted’, ‘false’)
    dev_open_window (0, 800, 192, 144, ‘black’, WindowChar)
  • 合并区域
    union1 (CharRotated, CharRotatedAll)
  • 求区域最小外接矩形
    smallest_rectangle1 (CharRotatedAll, Row1, Column1, Row2, Column2)
    ZoomHeight := Row2 - Row1 + 1
    ZoomWidth := Column2 - Column1 + 1
    ZoomFactor := min([768 / ZoomWidth,576 / ZoomHeight])
    ZoomRow := (Row1 + Row2) / 2
    ZoomColumn := (Column1 + Column2) / 2
    dev_set_part (ZoomRow - 576 / ZoomFactor / 2, ZoomColumn - 768 / ZoomFactor / 2, ZoomRow + 576 / ZoomFactor / 2 - 1, ZoomColumn + 768 / ZoomFactor / 2 - 1)
    dev_display (RimRotated)
    dev_set_draw (‘fill’)
    dev_set_colored (12)
    dev_display (CharRotated)

处理思路

这个例子是主要讲解了使用blob方法进行孔洞测量;使用动态阈值进行字符区域提取。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

HALCON示例程序rim.hdev轮圈孔检测提取字符相关推荐

  1. HALCON示例程序resistor.hdev通过不同焦距图像提取深度信息

    小哥哥小姐姐觉得有用点个赞呗! HALCON示例程序resistor.hdev通过不同焦距图像提取深度信息 示例程序源码(加注释) 关于显示类函数解释 Names := [] dev_close_wi ...

  2. HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测

    HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测 示例程序源码(加注释) 关于显示类函数解释 dev_update_window ('off') ...

  3. HALCON示例程序measure_metal_part_id.hdev使用xld边缘拟合检测零件加工是否合格

    HALCON示例程序measure_metal_part_id.hdev使用xld边缘拟合检测零件加工是否合格 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () Imag ...

  4. HALCON示例程序inspect_bottle_mouth.hdev玻璃瓶口缺陷检测

    HALCON示例程序inspect_bottle_mouth.hdev玻璃瓶口缺陷检测 示例程序源码(加注释) 定义变量并初始化 SmoothX := 501 ThresholdOffset := 2 ...

  5. HALCON示例程序count_fish_sticks.hdev鱼棒完整性检测

    HALCON示例程序count_fish_sticks.hdev鱼棒完整性检测 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window () ...

  6. HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏

    HALCON示例程序classify_halogen_bulbs.hdev使用SVM分类器检测卤素灯泡的好坏 示例程序源码(加注释) 得到halcon默认图片存储路径 get_system ('ima ...

  7. HALCON示例程序measure_ball_bond.hdev电路板焊点位置测量

    HALCON示例程序measure_ball_bond.hdev电路板焊点位置测量 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window ( ...

  8. HALCON示例程序check_hazelnut_wafers.hdev威化饼干质量检测(完整与否,是否破碎)

    HALCON示例程序check_hazelnut_wafers.hdev威化饼干质量检测(完整与否,是否破碎) 示例程序源码(加注释) 读入图片 read_image (Image, 'food/ha ...

  9. HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体

    HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体 小哥哥小姐姐觉得有用点个赞呗! 示例程序源码(加注释) 蓝色字体均为算子解释链接,可以前往查看解答 关于 ...

最新文章

  1. python TypeError: not all arguments converted during string formatting 解决
  2. ubuntu中的日志文件位置,用于错误查找
  3. 牛客网【每日一题】4月22日 K-th Number
  4. 显示日期的指令: date
  5. LibLinear(SVM包)使用说明之(三)实践
  6. Lumia 800 7.10.8783.12
  7. 数学建模算法与应用(一)线性规划
  8. 若依集成yuicompressor实现(CSS/JS压缩)
  9. python网络爬虫网易云音乐guihub_GitHub - GreatV/CloudMusic-Crawler: 网易云音乐爬虫,数据可视化。...
  10. python支持复数类型以下说法错误的是_关于Python的数字类型,以下选项中描述错误的是...
  11. 数据流图、业务流程图、E-R图、系统功能结构图、程序流程图
  12. Unity3D插件 Doozy UI 学习(一):打开一个面板
  13. Win10、11快速切换不同桌面快捷键
  14. 开通公众号啦:java4all
  15. 超级马里奥(待完善)
  16. Android 设备Id 唯一不重复,Redmi
  17. 美团 python_Python | 美团差评数据分析
  18. 电脑开远程的几个方法
  19. 动态代理的原理及其应用
  20. 【20230204】Ubuntu系统备份与恢复

热门文章

  1. 如何设计实现一个地址反解析服务?
  2. 缩小窗口时CSS背景图出现右侧空白BUG的解决方法
  3. 在eclipse中创建第一个java应用程序,并在控制台输出“hello world”。
  4. Python 原生爬虫
  5. python基础知识-列表,元组,字典
  6. DJ轮回舞曲网下载教程
  7. Thymeleaf3语法详解
  8. vue --- ref属性获取dom元素和子组件的方法
  9. PHP 计算两个两个文件的相对路径
  10. 【小贴士】虚拟键盘与fixed带给移动端的痛!