*

模板匹配
*读取并显示图像;
*确定模板ROI及检测ROI;
*创建模型;
*匹配模板;
*ROI仿射变换,得到ROI位置dev_update_off()
dev_close_window ( )*#读取整个文件夹的图像
*1 列出指定路径下的文件
list_files ('./Files', 'files', Files)
tuple_regexp_select (Files, '\\.jpg$', Files)
read_image (Image, Files[0])dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)*2 根据模板形状创建相应区域
read_image (T, './moban/moban_1.jpg')get_image_size (T, Width, Height)
dev_set_color ('red')*圆形
gen_circle (shape, 2093, 1630, 1773)
*矩形
*gen_rectangle1 (shape, 164.5, 126.5, 323, 476.5)*多边形轮廓
*dev_set_color ('green')
*dev_set_line_width (3)
*坐标数组
*rows1:=[20,100,100,20,20]
*cols1:=[20,20,250,250,20]
*radius:=[20,20,20,20,20]
*rows2:=[20,20,100,100,20]
*cols2:=[320,550,550,320,320]
*带圆角的多边形轮廓
*gen_contour_polygon_rounded_xld (Contour, rows1, cols1, radius, 1)
*不带圆角的多边形轮廓
*gen_contour_polygon_xld (Contour1, rows2, cols2)
*生成十字形状
*gen_cross_contour_xld( : Cross : Row, Col, Size, Angle :)*3 将模板从所在区域分离
* read_image (image, 'D:/0halcon/demo/20220425/2.jpg')*可以选择一个文件
*opening_circle (Image, RegionOpening, 3.5)
reduce_domain (Image, shape, ImageReduced)*4 创建模板
*圆用create_shape_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
create_shape_model (ImageReduced, 4, rad(0), rad(360), 'auto', 'auto', 'use_polarity', 30, 10, ModelID)
*算子原型:create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)
*–Template :用于创建模板的图像,是原图的模板ROI区域;
*–NumLevels:金字塔层的最大层数;
*–AngleStart:模板的最小旋转角度,以弧度为单位;
*–AngleExtent:旋转角度范围,必须≥0,以弧度为单位;如果超出角度范围,则模型搜索不到
*–AngleStep:角度步长,以弧度为单位;
*–Optimization:生成模型的优化方法;
*–Metric:模板匹配的条件,在模板与图像亮暗发生反转时可使用;
*–Contrast:创建模型时,模型点的对比度;
*–MinContrast :在搜索的图像中,搜索对象的最小对比度,必须<Contrast;
*–ModelID:模型的句柄。*5 设置原点
area_center (shape, Area, Row1, Column1)
set_shape_model_origin (ModelID, Row1, Column1)
*set_shape_model_origin (ModelID, -Row, -Column)*6 获取初始模板轮廓
get_shape_model_contours (ModelContours, ModelID, 1)dev_set_color ('red')
dev_set_draw ('margin')
dev_display (ModelContours)*7 匹配模板
for Index := 0 to |Files|-1 by 1read_image (Image, Files[Index])*7.1在另一幅图中查找对应区域  //进行模板匹配找模板*开运算*opening_rectangle1 (Image, RegionOpening, Width, Height)find_shape_model (Image, ModelID, 0, rad(360), 0.4, 1, 0.5, 'least_squares', 0, 0.7, Row3, Column3, Angle, Score)*算子原型:find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, *NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)**– Image :输入图像;*–ModelID:模型的句柄;*–AngleStart:模板的最小旋转角度,以弧度为单位;*–AngleExtent:旋转角度范围,必须≥0,以弧度为单位;如果超出角度范围,则模型搜索不到*–MinScore:要搜索到的模型实例的最小得分,如果低于此分数,则搜索不到;*–NumMatches:要搜索到的模型实例的个数;*–MaxOverlap:要找到的模型实例的最大重叠;*–SubPixel:确定找到的目标是否使用亚像素精度提取;*–NumLevels:搜索过程中使用的金字塔级别的数量 ;*–Greediness :搜索启发式的“贪婪度”,(0:安全但缓慢;1:快,但可能匹配不到)*–Row:找到的模型实例的行坐标,坐标值是找到模板的原点在图像坐标系中的行坐标;*–Column:找到的模型实例的列坐标,坐标值是找到模板的原点在图像坐标系中的列坐标;*–Angle:找到的模型实例的角度;*–Score: 找到的模型实例的分数。*7.2坐标转行,得到模板的ROI和检测ROI,确定匹配位置的轮廓*7.2.1 先获取模板轮廓,获取轮廓在(0,0)位置;*7.2.2:求模板匹配实例---的旋转矩阵;    *7.2.3:利用仿射变换---得到匹配实例--轮廓;    *7.2.4:轮廓转成区域;if (Row3>=0) //如果找到模板数>0*显示找到的--模板轮廓dev_display_shape_matching_results (ModelID, 'red', Row3, Column3, Angle, 1, 1, 0)*循环遍历每个查到的实例for I := 0 to |Score| - 1 by 1vector_angle_to_rigid (Row3, Column3, Angle, Row3, Column3, Angle, HomMat2D1)*算子原型:vector_angle_to_rigid( : : Row1, Column1, Angle1, Row2, Column2, Angle2 : HomMat2D)*–Row1:原始点的行坐标;*–Column1:原始点的列坐标;*–Angle1:原始点的角度;*–Row2:变换点的行坐标;*–Column2:变换点的列坐标;*–Angle2:变换点的角度;*–HomMat2D:输出的变换矩阵。*给旋转矩阵添加缩放信息hom_mat2d_scale (HomMat2D1, 2, 2, Column3, Row3, HomMat2DScale)*通过初始模板和旋转矩阵运算---得到模板实例轮廓affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2DScale)*轮廓转区域gen_region_contour_xld (ContoursAffineTrans, Region, 'filled')*得到匹配图像的轮廓线affine_trans_contour_xld (ContoursAffineTrans, ContoursAffineTrans1, HomMat2DScale)affine_trans_region (Region, RegionAffineTrans, HomMat2DScale, 'nearest_neighbor')endfor*dev_set_color ('red')*dev_display (RegionAffineTrans)endifendfor**获取指定轮廓上点的像素坐标
*get_contour_xld (ContoursAffineTrans, Row1, Col)

Halcon_模板匹配相关推荐

  1. 《OpenCV3编程入门》学习笔记9 直方图与匹配(五)模板匹配

    9.5 模板匹配 基本思想:   在一幅图像中寻找与另一幅模板图像最匹配的部分,通过在输入图像上滑动图像块,对实际的图像块和输入图像进行匹配. 9.5.1 模板匹配:matchTemplate()函数 ...

  2. OpenCV+python:模板匹配

    1,模板匹配的概念及原理 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术. 我们需要2幅图像: 模板 (T): 将和原图像比照的图像块 原图像 (I): 在这幅图像里,我们希望 ...

  3. OpenCV(项目)车牌识别3 -- 模板匹配

    目录 一.基础理论 1.思想 2.大致过程 二.详细过程 1.首先需要模板库 2.得到模板 3.原图限定大小 4.模板匹配 5.匹配所有子文件夹,保存最佳得分(最匹配项) 三.大致过程(细分类,节省时 ...

  4. OpenCV(二十)模板匹配

    目录 一.基础理论 1.作用与过程 2.原理 3.函数matchTemplate 二.代码 三.效果 参考资料 一.基础理论 1.作用与过程 所谓的模板匹配,就是在给定的图片中查找和模板最相似的区域, ...

  5. 人眼模板匹配自动跟踪

    void trackEye(cv::Mat& im, cv::Mat& tpl, cv::Rect& rect) {// 人眼位置cv::Size pSize(rect.wid ...

  6. OpenCV中使用模板匹配识别空闲的货架空间

    但是点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 假设你是一名在超市工作的员工,被要求在商店里四处走动,检查需要 ...

  7. Opencv java模板匹配-角点检测(11)

    函数 在opencv中有模板匹配的方法, Imgproc.matchTemplate(src, template, result, Imgproc.TM_CCOEFF); 这个方法输入的参数分别是: ...

  8. python opencv模板匹配多目标_基于opencv的多目标模板匹配

    利用opencv进行多目标模板匹配,只要是利用其matchTemplate函数,但在多目标(这里是讨论目标图片中不同大小模板的匹配),以下贴出代码和图片,供大家参考: #include #includ ...

  9. OpenCvSharp手绘ROI区域+模板匹配+霍夫变换检测圆的边界

    最终效果如下: 左侧为检测图片.右侧为模板,右下角textbox为轮毂中心的像素坐标 操作步骤: 1.点击打开图像选择一张比较不错的图片,用于画模板: 2.在picturebox中画取ROI区域生成模 ...

最新文章

  1. 文件上传的实现(C#)
  2. proguard的简单配置说明
  3. 北斗导航 | 坐标转换:ECEF转LLA:GPS坐标系:WGS84(matlab代码)
  4. spring 三级缓存_通过画图+视频把循环依赖、监听器等等spring源码讲明白了
  5. [转]Displaying standard DataTables in MVC
  6. rsync实时同步服务部署
  7. 20个Android游戏源码,…
  8. 程序员如何写工作日志?
  9. python毕业论文答辩ppt_如何制作优秀的毕业论文答辩 PPT?
  10. 电脑驱动器中出现Winretools和ESP问题
  11. 学了Java可以做什么工作
  12. SCC1传输请求(同系统跨Client)
  13. 思岚S2激光雷达1—初次连接
  14. GEO,IGSO,MEO,LEO
  15. android 全景拼接软件,这款全景图片拼接软件很强大
  16. dataview中写入对象_DataView对象
  17. 连花清瘟胶囊新冠应用 大健康医药·李喜贵:微量元素作用解密
  18. springboot + vue3实现视频播放Demo(video.js Vue3-video-play视频播放器)
  19. 如何写一个简单的局域网游戏
  20. Matlab GUI界面编程小白学习笔记

热门文章

  1. 触类旁通Elasticsearch:优化
  2. addslashes()
  3. LiquiBase笔记
  4. php万国码,如何认识编码
  5. MP2494 国产替代PIN TO PIN性能参数更优方案
  6. 编写程序判断大小端的两种方法
  7. android App一段时间没有操作或没有点击屏幕后弹出广告,或者一段时间没有点击屏幕进行特定操作。
  8. 二类医疗器械emc注册检验、委托检验放还是第三方检验?
  9. 【聊天表情包小程序的开发】之开发简介
  10. 业余草总结常见计算广告点击率预估算法