• halcon 提取图像中的感兴趣区域


    功能:提取图像红框中圆孔里面的7个白点。 

     具体步骤

    P1:加载一张图像

    1. * 加载一张图像
    2. read_image(Image, 'xxx.png')
    3. *获取图像的大小
    4. get_image_size(Image, Width, Height)
    5. *显示图像
    6. dev_close_window()
    7. dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
    8. dev_display(Image)

    P2:转为灰度图像

    rgb1_to_gray(Image, GrayImage)

    P3:均值滤波,二值化,提取亮区域

    1. * 均值滤波
    2. mean_image(GrayImage, ImageMean, 31,31)
    3. * 动态二值化,提取亮区域
    4. dyn_threshold(GrayImage, ImageMean, RegionDynThresh, 5, 'light')
    均值滤波
    均值滤波

     

    二值化,提取亮区域

    P4:将提取的二值化区域打散

    connection(RegionDynThresh, ConnectedRegions)

     P5:填充所有的区域

    fill_up(ConnectedRegions, RegionFillUp)

     P6:根据矩形度筛选所有的区域

    select_shape(RegionFillUp, SelectedRegions, 'rectangularity', 'and', 0.9, 1)

     P7:根据面积筛选,过滤面积小的

    select_shape(SelectedRegions, SelectedRegions1, 'area', 'and', 6000, 9000)

    P8:与ConnectedRegions求取交集,获取方形区域的对应的二值化后的区域

    1. intersection(ConnectedRegions, SelectedRegions1, RegionIntersection)
    2. connection(RegionIntersection, ConnectedRegions1)

     P9:填充所有区域

    fill_up(ConnectedRegions1, RegionFillUp1)

     

    P10:根据圆度以及圆点面积筛选圆所在的区域

    1. select_shape(RegionFillUp1, SelectedRegions2, 'circularity', 'and', 0.8, 1)
    2. select_shape(SelectedRegions2, SelectedRegions3, 'area', 'and', 500, 700)

    P11:根据圆里面小点的面积筛选所有的小圆点

    1. intersection(RegionFillUp1, SelectedRegions3, RegionIntersection1)
    2. select_shape(RegionIntersection1, SelectedRegions4, 'area', 'and', 2, 100)

     

    P12:最终获取的效果图如下

     

     

  • 相关阅读:
    前端开发面试题—JavaScript原型链
    JUL 日志
    面试官:介绍一下 Redis 三种集群模式
    智慧寝室管理系统
    DevOps|研发效能治理:进化史、规模化与治理复杂性
    PlantSimulation访问本地Excel文件的方法
    java计算机毕业设计校园共享单车系统源代码+系统+数据库+lw文档
    union
    企业微信管理客户如何管理?
    2023年阿里云新用户云服务器价格表
  • 原文地址:https://blog.csdn.net/qq_32285693/article/details/127117360