在待识别图像上找到模板图像

待识别图像:

模板图像:

识别原理

1. 将待识别图像 -> 灰度图像 -> 二值图像
2. 通过轮廓检索函数 cv.findContours 找到待识别图像所有轮廓
3. 模板图像 -> 灰度图像 -> 二值图像
4. 通过轮廓检索函数 cv.findContours 找到模板图像中字母 A 的外轮廓
5. 将第2步得到的轮廓逐一和第4步得到的轮廓 通过 cv.matchShapes 函数进行形状匹配。找到其中最小值,最小值对应的待识别图像中的轮廓即为匹配到的模板图像
6. 标出在待识别图像中找到的模板图像

实验:图像匹配

import cv2 as cv
import numpy as np# 载入原图
img = cv.imread('abc.jpg', 0)
# 在下面这张图像上作画
image1 = cv.cvtColor(img,cv.COLOR_GRAY2BGR)# 二值化图像
_, thresh = cv.threshold(img, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
# 搜索轮廓
contours, hierarchy = cv.findContours(thresh, 3, 2)
hierarchy = np.squeeze(hierarchy)# 载入标准模板图
img_a = cv.imread('template_a.jpg', 0)
_, th = cv.threshold(img_a, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)
contours1, hierarchy1 = cv.findContours(th, 3, 2)
# 字母A的轮廓
template_a = contours1[0]# 记录最匹配的值的大小和位置
min_pos = -1
min_value = 2
for i in range(len(contours)):# 参数3:匹配方法;参数4:opencv预留参数value = cv.matchShapes(template_a,contours[i],1,0.0)if value < min_value:min_value = valuemin_pos = i# 参数3为0表示绘制本条轮廓contours[min_pos]
cv.drawContours(image1,[contours[min_pos]],0,[255,0,0],3)cv.imshow('result',image1)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果

opencv 利用轮廓检索函数实现字母匹配(图像匹配)相关推荐

  1. 用实际例子详细探究OpenCV的轮廓检测函数findContours(),彻底搞清每个参数、每种模式的真正作用与含义

    关于OpenCV的轮廓检测函数findContours()各参数的大概意义,已在博文 https://blog.csdn.net/wenhao_ir/article/details/51798533中 ...

  2. 用实际例子详细探究OpenCV的轮廓绘制函数drawContours()

    博主(昊虹图像算法)注:为了更好的理解这篇博文的内容,建议大家先阅读博主对OpenCV轮廓检测函数findContours()的详细介绍,链接 https://blog.csdn.net/wenhao ...

  3. OpenCV中常用到的轮廓处理函数汇总

    转自:http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm ApproxChains 用多边形曲线 ...

  4. 如何利用OpenCV寻找轮廓的中心?

    简 介: 本文介绍了利用OpenCV和Python编程来计算形状轮廓的中心点.当然后面还会继续给出如何通过轮廓来分辨物体形状种类,以及对于各自的颜色进行标准. 关键词: OpenCV,contours ...

  5. Opencv的使用小教程3——利用轮廓检测实现二维码定位

    Opencv的使用小教程3--利用轮廓检测实现二维码定位 二维码具有什么特征 实现效果 识别二维码的流程 1.预处理图像 2.寻找轮廓 3.通过寻找到的轮廓确定"回"的位置 4.创 ...

  6. 使用Opencv进行轮廓检测,字符提取,简单的直方图字符识别!

    一.使用Opencv进行轮廓检测! 所需函数: 1. cvFindContours 函数功能:从二值图像中检索轮廓,并返回检测到的轮廓的个数 函数原型: int)  cvFindContours( C ...

  7. opencv 基础(6):基于OpenCV的轮廓检测

    利用轮廓检测,我们可以检测出目标的边界,并容易地定位.它通常是许多有趣应用,如图像前景提取,简单图像分割,检测和识别. 轮廓线在计算机视觉中的应用 一些非常酷的应用程序已经建立,使用轮廓进行运动检测或 ...

  8. python使用opencv查找轮廓_(八)OpenCV-Python学习—轮廓查找,绘制和拟合

    针对物体轮廓,opencv还提供了一些相关的函数,来处理轮廓查找,绘制,拟合,以及计算轮廓周长和面积等,详细介绍如下: 1. 寻找和绘制轮廓 opencv的findContours()能寻找图片中的轮 ...

  9. OpenCV的轮廓查找和填充

    OpenCV的轮廓查找有C版本和C++版本,当轮廓比较复杂的时候,例如嵌入多层轮廓,如果方法不当那么很容易会漏处理一些轮廓.本文介绍了复杂轮廓场景下的几种主要的查找轮廓和颜色填充方法. 1:cvFin ...

最新文章

  1. 也议MySQL中隐式转换
  2. 11.PHP与MySQL
  3. Windows下安装Object C开发环境,及Hello Word(转)
  4. Webpack基础之入口起点
  5. MySql与SqlServer的一些常用用法的差别
  6. 实用的 Python —— 快速进行相关计算
  7. 2021年中国键合对准系统市场趋势报告、技术动态创新及2027年市场预测
  8. 重签名ipa步骤及工具
  9. 国美易卡利用数据挖掘技术,国美易卡精准分析决策
  10. STIM300读取数据
  11. Docker Study Note
  12. Harbor docker
  13. 安全防御之入侵检测篇
  14. python爬取美女_Python爬取高颜值美女(爬虫+人脸检测+颜值检测)附学习教程
  15. Debian 安装sublime 安装拼音输入法 安装谷歌浏览器
  16. B05 - 020、HDFS初体验
  17. 牛逼的python代码_牛逼啊!一个随时随地写Python代码的神器
  18. 韩国计划扩展网络道德课程
  19. 6. ESP8266固件的下载
  20. 雷达信号处理基础 距离方程

热门文章

  1. python视频教程-Python视频教程
  2. python计算工资编程-老男孩学Python编程后薪资待遇高吗?
  3. java虚拟机结构图解(堆栈方法区)
  4. 硬盘是办公设备还是计算机设备,机械硬盘价格与区别【详细介绍】
  5. Oracle创建数据库出错,oracle 10g dbca创建数据库出错 急急急
  6. 地铁票务管理系统_地铁票务管理工作总结
  7. python数据科学手册_数据科学的Python
  8. JavaScript-预解析(变量提升)
  9. c语言商品管理系统文件,c语言商品管理系统(文件应用).doc
  10. 开源视频监控系统:iSpy