• Halcon 获取匹配到的模板区域


    在使用Halcon进行模板匹配的时候,我们使用find_shape_model、find_scaled_shape_model等算子找到模板后返回的是实例,得到的数据是模板中心的行列坐标、角度和缩放比例等数据,不是具体的区域,下面介绍怎么得到具体区域。

    解决思路:

    一:先获取模板的轮廓,此时获取的轮廓位置在(0,0)的位置;

    二:求出模板到匹配实例的旋转矩阵;

    三:利用仿射变换得到匹配实例的轮廓;

    四:将轮廓转成区域;

    代码及注释讲解:

     1 //获取初始模板轮廓
     2 get_shape_model_contours (ModelContours1, ModelID, 1)
     3 //进行模板匹配找模板
     4 find_scaled_shape_model (Image0, ModelID, -3.14, 6.29, 0.95, 1.1, 0.90, 6, 0.5, 'least_squares', 8, 0.9, RowModel3, ColumnModel3, AngleModel3, Scale, Score1)
     5 if(|RowModel3|>0)//如果找到的模板数量大于0
     6         //显示找到的模板轮廓
     7         dev_display_shape_matching_results (ModelID, 'red', RowModel3, ColumnModel3, AngleModel3, 1, 1, 0)
     8         //循环遍历每个找到的实例
     9     for I := 0 to |Score1| - 1 by 1
    10         //求出初始模板到实例中间的旋转矩阵--注:初始模板的行列坐标和角度都是0
    11         vector_angle_to_rigid (0, 0, 0, RowModel3[I], ColumnModel3[I], AngleModel3[I], HomMat2DRotate)
    12         //给旋转矩阵添加缩放信息
    13         hom_mat2d_scale (HomMat2DRotate, Scale[I], Scale[I], RowModel3[I], ColumnModel3[I], HomMat2DScale)
    14         //通过初始模板和旋转矩阵运算得到模板实例的轮廓
    15         affine_trans_contour_xld (ModelContours1, ModelTrans, HomMat2DScale)
    16         //轮廓转区域
    17         gen_region_contour_xld (ModelTrans, Region, 'filled')
    18 endif
  • 相关阅读:
    xxx.app已损坏,打不开.你应该将它移到废纸篓-已解决
    idea 配置maven一直停留在loading archetype list
    pom.xml 识别xml文件
    idea .defaultMessage
    处理GitHub上的不允许100MB大文件上传
    Makefile 简易教程
    Android:用Intent传送图片
    Android: ListView的使用(列表控件)
    Android: SharedPreferences的简单使用(数据可持久化)
    Andriod:一个Activity向另一个Activity传递数据
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14446197.html
Copyright © 2020-2023  润新知