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

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

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

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

四:将轮廓转成区域;
————————————————

read_image (Image,'green-dot')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
*draw_circle (WindowHandle, Row, Column, Radius)
* gen_circle (Circle, 274.5, 280.5, 95)

*获取模板区域
* reduce_domain (Image, Circle, ImageReduced)

*创建模板
* create_scaled_shape_model (ImageReduced, 'auto', rad(-45), rad(90), 'auto', 0.9, 1.1, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)

*保存模板
* write_shape_model (ModelID, 'D:/Demo/Model.shm')

*读取模板
read_shape_model ('D:/Demo/Model.shm', ModelID1)

read_image (Image1, 'green-dots')
dev_display (Image1)

*获取初始模板轮廓
get_shape_model_contours (ModelContours, ModelID1, 1)

find_scaled_shape_model (Image1, ModelID1,rad(-45), rad(90),  0.9, 1.1, 0.5, 0, 0.5, 'least_squares', 0, 0.9, Row1, Column1, Angle, Scale, Score)
for i:= 0 to |Score|-1 by 1

*显示找到的模板轮廓
    *dev_display_shape_matching_results (ModelID1, 'red', Row1[i], Column1[i], Angle[i], 1, 1, 0)

*求出初始模板到实例中间的旋转矩阵--注:初始模板的行列坐标和角度都是0
    vector_angle_to_rigid (0, 0, 0, Row1[i], Column1[i], Angle[i], HomMat2D)

*给旋转矩阵添加缩放信息
    hom_mat2d_scale (HomMat2D, Scale[i], Scale[i],  Row1[i], Column1[i], HomMat2DScale)

*通过初始模板和旋转矩阵运算得到模板实例的轮廓
    affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2DScale)

*轮廓转区域
    gen_region_contour_xld (ContoursAffinTrans, Region, 'margin')
    
     if(Score[i] > 0.8)

*用十字显示中心点
        *disp_cross (WindowHandle, Row1[i], Column1[i], 20, Angle[i])
    endif
endfor

Halcon形状模板匹配相关推荐

  1. HALCON:模板匹配方法总结

    HALCON:模板匹配方法总结

  2. 如何用halcon实现模板匹配

    最近在搞halcon的模板匹配,花了两天时间算是彻底搞明白了,下面大致给朋友们分享下 首先给大家分享如何使用halcon软件实现模板匹配 第一步:打开halcon软件,界面如下 第二步:点击目录栏里面 ...

  3. 基于HALCON的模板匹配方法总结

    很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间.去年有过一段时间的集中学习,做了许多的练习和实验,并对基于HDevelop的形状匹配算法的参数优化进行了研究,写了一篇& ...

  4. 我的Qt作品(5)使用Qt+Halcon实现模板匹配;支持ROI框选/橡皮擦涂抹功能

    声明: 本作品的开发初衷是来自一篇博客(链接见文末).源码是基于网友的原创版本,本人在此基础上重构和新增功能. 网友原创版本截图: 开发环境: Windows7/10 x64,VS2017,Qt5.1 ...

  5. 【Halcon】模板匹配算子

    1.create_ncc_model 函数原型:create_ncc_model( Template : : NumLevels, AngleStart, AngleExtent, AngleStep ...

  6. 基于Halcon学习的基于形状模板匹配【一】find_scaled_shape_model.hdev例程

    套路: (1)读取图片 (2)Blob分析/直接ROI抠图 (3)创建模板 create_scaled_shape_model() (4)匹配模板 find_scaled_shape_model() ...

  7. halcon NCC模板匹配读写算子

    write_ncc_model WriteNccModel - 将一个NCC模板写入一个文件中 函数原型:write_ncc_model( : : ModelID, FileName : ) 功能:算 ...

  8. Halcon学习路线——模板匹配和仿射变换

    模板匹配 1. 模板匹配分类 2. 看一个案例 3. 资源下载 1. 模板匹配分类 halcon对模板匹配进行了详细的分类 基于灰度的模板匹配是最基础也是最简单的,但是由于其受光照影响很大,匹配的精度 ...

  9. halcon三种模板匹配方法

    转自 : http://blog.csdn.net/hust1900/article/details/8843270 halcon有三种模板匹配方法:即Component-Based.Gray-Val ...

最新文章

  1. python学习之老男孩python全栈第九期_day004知识点总结
  2. 二十四、爬取古诗网中的100首古诗文
  3. Java原子操作Atomic
  4. 在线提问:音视频技术开发是事业还是热爱所在?
  5. js object转数组_const 和 Object.freeze() 的区别 ?
  6. LNMP一键安装包+Thinkphp搭建基于pathinfo模式的路由(可以去除url中的.php)
  7. :传递给 left 或 substring 函数的长度参数无效。_Excel中LEFT函数和RIGHT函数的用法。...
  8. 将下图的nfa确定化为dfa_实战技术利用AutoCAD确定PCB板型
  9. SpringBoot修改内置tomcat版本
  10. 谈谈如何提升工作效率,需要从这4方面入手!
  11. [英语歌曲]孤独:Soledad
  12. MOS管(场效应管)工作原理,及反向导通应用
  13. STM32 FreeRTOS (三) 软件定时器
  14. 做摄像双机位直播(多机位直播)的整个流程的介绍
  15. Typora markdown语法基础教程
  16. TensorFlow技术内幕(八):模型优化之XLA(下)
  17. 7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。
  18. ubuntu里打开rar,zip文件方法
  19. 字符串匹配KMP算法及其时间复杂度分析
  20. 某战友H3CTE之旅

热门文章

  1. 一文轻松明白 Base64 编码原理
  2. C# DataGridView控件选中行获取其值
  3. vi复制粘贴(转贴+自己总结)
  4. python字典求平均值_Python
  5. CSS中的overflow,
  6. Python爬虫:BeautifulSoup的find()和findAll()
  7. latex 矩阵叫行列编号
  8. C0G(NP0) 电容的耐压测试
  9. CAD图纸无法复制粘贴该怎么办?
  10. 【Mysql索引】二叉树、红黑树、B树、B+树