试一下多种方式的模板匹配:

dev_close_window ()
read_image(Image, '2008531173479_2')
dev_open_window_fit_image(Image, 0, 0, 512, 512, WindowHandle)
dev_display(Image)* 从原图中裁切一块作为模板
crop_part(Image, ImagePart, 445, 250, 240, 220)
dev_set_draw('margin')
mean_image(ImagePart, ImageMean, 3, 3)
rgb1_to_gray(ImageMean, GrayImage)
* 将原图缩小到一半
zoom_image_size(GrayImage, GrayImage, 120, 110, 'constant')
* 使用切出来创建一个ncc模板(模板生成方式1)
create_ncc_model(GrayImage, 'auto', -0.39, 0.79, 'auto', 'use_polarity', ModelID)
rotate_image(Image, ImageRotate, 45, 'constant')
rgb1_to_gray(Image, GrayImage1)
* 匹配
find_ncc_model(GrayImage1, ModelID, -0.39, 0.79, 0.8, 1, 0.1, 'true', 0, Row, Column, Angle, Score)
if (|Row| > 0)gen_rectangle1(Rectangle, Row - 100, Column - 100, Row + 100, Column + 100)
endif* 模板生成方式2,这个模板是可以旋转匹配的,也就是说,如果图像旋转了,上面那个模板就匹配不到
create_ncc_model(GrayImage, 'auto', 0, rad(360), 'auto', 'use_polarity', ModelID1)
rgb1_to_gray(ImageRotate, GrayImage2)
find_ncc_model(GrayImage2, ModelID1, 0, rad(360), 0.8, 1, 0.1, 'true', 0, Row1, Column1, Angle1, Score1)
if (|Row1| > 0)gen_rectangle2(Rectangle1, Row1, Column1, Angle1, 100, 100)
endif* 模板生成方式3,这个模板是适合有缩放或有旋转的匹配的,如果模板进行了缩放或者图像进行了缩放,上面那两个模板都会匹配不了
* 旋转角度范围和图片缩放比例可配,如果支持的范围太大的话,会影响匹配速度。
create_scaled_shape_model(GrayImage, 'auto', 0, rad(140), 'auto', 0.5, 10, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID2)
find_scaled_shape_model(GrayImage2, ModelID2, 0, rad(140), 0.5, 10, 0.5, 1, 0.5, 'least_squares', 0, 0.1, Row2, Column2, Angle2, Scale, Score2)
if (|Row2| > 0)gen_rectangle2(Rectangle2, Row2, Column2, Angle2, 100, 100)
endif

看一下最后一种方式,
create_scaled_shape_model(Template, 输出值,模板
NumLevels, 图像金字塔层数,用来降低匹配时长,每增加一层图像的宽高就会减半,图像分辨率会降低
AngleStart, 旋转开始的弧度
AngleExtend, 旋转的角度范围
AngleStep, 旋转步长,如果不知道怎么设置,可以设置为auto,步长设置的越小,越占用内存,越慢
ScaleMin, 最小缩放倍数
ScaleMax, 最大缩放倍数
ScaleStep, 缩放步长,可以设置为auto
Optimization, 优化方式
Metric, 是否使用极性,如果使用极性,那么如果模板背景灰度弱,前景灰度强,那么匹配的图片也必须满足这样的条件;如果不要求极性,当匹配的图片背景灰度强,前景灰度弱的时候也会匹配到,忽略极性会导致匹配耗时增加
Contrast, 和模板图片对比度相关的一个阈值,可以直接使用auto
MinContrast, 用来匹配的图片的最小对比度
ModelID) 输出值,模板ID

find_scaled_shape_model(Image, 用来查找的图片
ModelID, 模板ID
AngleStart,
AngleExtent,
ScaleMin,
ScaleMax,
MinScore, 匹配的最低分数,大于这个分数的才是被接受的匹配
NumMatches, 需要找的匹配数量
MaxOverlap, 最大重叠
SubPixel, 是否亚像素精度
NumLevels, 图像金字塔层数
Greediness, 搜索贪婪度,0-1,越大搜索越快,可以理解为搜得越不仔细
Row, 搜索到的行坐标
Column, 搜索到的列坐标
Angle, 相对于x轴正半轴的旋转角度
Scale, 图片相对于模板的缩放倍数bc
Score) 得分

搜索到的行列坐标都是匹配上的模板中心坐标。模板的中心坐标默认是模板的原点坐标,可以通过set_shape_model_origin来进行调整。
当模板是对称的时候,需要控制旋转角度来防止搜索到多个角度不同的相同匹配

转载于:https://www.cnblogs.com/yutou2016/p/11177711.html

图像处理笔记(十八):模板匹配相关推荐

  1. OpenCV与图像处理学习十六——模板匹配

    OpenCV与图像处理学习十六--模板匹配 一.模板匹配介绍 二.代码应用 一.模板匹配介绍 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位. ...

  2. 图像处理之基于NCC模板匹配识别

    图像处理之基于NCC模板匹配识别 一:基本原理 NCC是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1, 1]之间,而对图像来说,每个像素点都可以看出是RGB数值,这样整幅图像就可以看 ...

  3. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置...

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置 Download JetBrains Python IDE :: PyCharm http://ww ...

  4. windows内核开发学习笔记十八:IRP 处理的标准模式

    windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...

  5. Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件

    Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件 插件是由PolyWorks加载的动态链接库(DLL文件),然后查询Polyworks模块,以确定它们具有哪些功能,提供给 ...

  6. python图像处理笔记-十二-图像聚类

    python图像处理笔记-十二-图像聚类 学习内容 这一章主要在学习的是聚类算法以及其在图像算法中的应用,主要学习的聚类方法有: KMeans 层次聚类 谱聚类 并将使用他们对字母数据及进行聚类处理, ...

  7. STM32复习笔记(十八) —— 高级定时器(输出比较)

    STM32复习笔记(十八) -- 高级定时器(输出比较) 1.配置步骤 1)选择计数器时钟 (内部,外部,预分频器) 2)将相应的数据写入TIMx_ARR and TIMx_CCRx寄存器中 3)可设 ...

  8. 【数字图像处理与应用】模板匹配

    [数字图像处理与应用]模板匹配 题目 模板匹配原理 Matlab代码实现 算法介绍 显示图像的匹配结果 (最匹配的一个) MATLAB实现 运行结果 图像的相关值结果: 在原图像上绘制检测到的目标位置 ...

  9. opencv学习笔记十八:模板匹配(cv2.matchTemplate、cv2.minMaxLoc)

    1.目标匹配函数:cv2.matchTemplate() res=cv2.matchTemplate(image, templ, method, result=None, mask=None) ima ...

  10. opencv进阶学习笔记8:模板匹配

    基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 模板匹配原理 模板匹配(Te ...

最新文章

  1. 代码覆盖测试工具Kcov简介及使用
  2. spark 写mysql 设置主键_Spark Sql 连接mysql
  3. 网上整理的对于Rest和Restful api的理解
  4. 交互设计新人的核心竞争力
  5. PHP培训教程 PHP里10个鲜为人知但却非常有用的函数
  6. 学习笔记Hadoop(四)—— Hadoop集群的安装与部署(1)—— 虚拟机安装、java安装
  7. Ansible系列之roles使用说明
  8. 【动态规划】石子合并 (ssl 2863)
  9. ios无痕埋点_iOS无痕埋点方案分享探究
  10. 车辆行人识别训练与部署,EasyDL-Jetson Nano 端边云协作专场公开课
  11. CentOS7设置静态ip地址的两种方式
  12. byte数组转blob类型_Java类型相互转换byte[]类型,blob类型
  13. 迫切想要成功之后的喜悦感,失败太久有点心灵上小小的打击,还需要继续前进。...
  14. C++ std::thread::hardware_concurrency() 获取CPU核心数
  15. java集合框架中迭代器的作用_Java中的集合框架之迭代器
  16. java单元测试(@Test)
  17. c++ 控制台应用程序隐藏dos界面
  18. 苹果计算机取消用户名和密码进入不,苹果电脑怎么设置不用密码开机
  19. QT 按钮切换背景图片
  20. MySQL的各种安装方式都给你

热门文章

  1. mvn本地库导入jar包
  2. linux ls 命令
  3. sql 查询所有数据库-表-表结构
  4. linux命令(32):free命令
  5. Android 出现警告Exported service does not require permission
  6. Flutter AnimatedAlign 使用解析
  7. MySql 你知道什么情况下适合使用Join 联表查询吗 ?
  8. Codewars--8kyu解题集
  9. win 10 VMware与Hyper-v共存
  10. GIL、进/线程池、同/异步、阻/非阻塞