当前位置: 首页 > news >正文

武进网站建设要多少钱网络营销的主要传播渠道是

武进网站建设要多少钱,网络营销的主要传播渠道是,wordpress页面自由布局,安全中国asp.net网站开发项目实战培训班简介:本文深入探讨 OpenCV 中的模板匹配技术。详细介绍构建输入图像与模板图像的步骤,包括读取、截取、滤波与存储等操作。剖析 cv2.matchTemplate 语法及其参数含义,阐述不同匹配方法下结果值的意义。同时讲解 cv2.minMaxLoc 语法&#xff0…

在这里插入图片描述

简介:本文深入探讨 OpenCV 中的模板匹配技术。详细介绍构建输入图像与模板图像的步骤,包括读取、截取、滤波与存储等操作。剖析 cv2.matchTemplate 语法及其参数含义,阐述不同匹配方法下结果值的意义。同时讲解 cv2.minMaxLoc 语法,并通过代码示例展示单模板匹配查找最小值与最大值的实现过程,以及多模板匹配的完整步骤,涵盖阈值设定、解的获取与标记绘制等,助您全面掌握 OpenCV 模板匹配要点,提升图像处理能力。
如果你觉得本文对你的OpenCV模板匹配学习有所帮助,请帮我点赞收藏 关注,我会持续创作更多的OpenCV相关的博文帮助你我共同进步。

OpenCV 模板匹配全解析:从单模板到多模板的实战指南

  • 模板匹配
    • 构建输入图像 与模板图像
  • cv2.matchTemplate语法
  • cv2.minMaxLoc语法
  • 单模板匹配查找最小值
  • 单模板匹配最大值
  • 多模版匹配
  • 致谢

模板匹配

是指把模板图像与输入进行比对滑动,遍历所有像素找到相似的。
在OpenCV中使用模板匹配分成两种,一种是单模版匹配,一种是多模板匹配。在本次的代码中使用了pig.JPG图像进行实验,大家可以复制图片然后跟自己的代码放在同一个文件夹下运行:
在这里插入图片描述

构建输入图像 与模板图像

模板图像构建的思路如下:
(第一步)把这个pig.JPG图像使用cv2.imread读取到项目文件中
(第二步)选择猪猪的眼睛对应的那部分np数组的索引
(第三步)使用高斯滤波对这部分进行平滑处理
(第四步)使用cv2.imwrite函数将做好的模板部分保存到pig_eye.JPG中
(这里使用高斯滤波的目的是为了不让截取的图片和原图一模一样)

import cv2
import numpy as np
img = cv2.imread("pig.JPG")
# print(img.shape)
img = img[300:400,220:370]
img = cv2.GaussianBlur(img,(5,5),0)
r = cv2.imwrite("eye.JPG",img)
cv2.imshow('eye',img)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述
构建输入图像是为了可以实现验证多模板匹配的效果:
(第一步)读取pig.JPG图片的shape
(第二步)构建一个两倍宽度的全0数组
(第三步)将图片复制到数组中
(第四步)展示复制效果

import cv2
import numpy as np
img = cv2.imread("pig.JPG")
height,width,channels = img.shape
empty = np.zeros((height,2*width,channels),dtype = np.uint8)
empty[0:height,0:width] = img
empty[0:height,width:width*2] = img
r = cv2.imwrite("moudle.JPG",empty)
cv2.imshow('moudle',empty)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

cv2.matchTemplate语法

result 返回值是由每个位置比较结果构成的一个结果集 ,他的尺寸是 输入图像 - 模板图像+1 无论是宽还是高都一样 = cv2.matchTemplate(image输入图像,templ模板图像,method匹配方法,mask通常使用默认值 仅支持TM_SQDIFF 和 TM_CCORR_NORMED)

对于参数method而言,分两种情况:

  1. 若值为cv2.TM_SQDIFF和cv2.TM_SQDIFF_NORMED时,result值越低匹配效果越好
  2. 若值为cv2.TM_CCORR和cv2.TM_CCORR_NORMED和cv2.TM-CCOEFF和cv2.TM-CCOEFF_NORMED时,值越大匹配效果越好

cv2.minMaxLoc语法

minVal 返回的最小值,maxVal 返回的最大值,minLoc最小值的位置,maxLoc最大值的位置 = cv2.minMaxLoc( 数组)

单模板匹配查找最小值

(第一步)cv2.matchTemplate选择method
(第二步)把筛选结果放入cv2.minMaxLoc函数进行找最小值得位置
(第三步)这个位置是模板匹配的左上角,根据宽高还原
(第四步)使用cv2.rectangle画白色标记(没用过没关系,看代码一眼就明白了)

import cv2
import numpy as np
import matplotlib.pyplot as plt
img =cv2.imread('pig.JPG',0)
template = cv2.imread("eye.JPG",0)
# 获取模板图像的宽度和高度
th,tw = template.shape[::]
# 匹配获得结果
result = cv2.matchTemplate(img,template,cv2.TM_SQDIFF)
# 找到最小值就是结果最好的位置
minVal,_,minLoc,_ = cv2.minMaxLoc(result)
# 左上角坐标
topLeft = minLoc
# 右下角坐标
bottomRight = topLeft[0]+tw,topLeft[1]+th
# 画框 需要左上角右下角 灰度值范围 和框的宽度
cv2.rectangle(img,topLeft,bottomRight,255,2)plt.subplot(121)
plt.imshow(template,cmap = 'gray')
plt.title("template_image")
plt.axis("off")plt.subplot(122)
plt.imshow(img,cmap = 'gray')
plt.title("result")
plt.axis("off")

在这里插入图片描述

单模板匹配最大值

只要你读懂了上一个例子,这里只需要修改method参数和选最大值就解决了,直接上代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt
img =cv2.imread('pig.JPG',0)
template = cv2.imread("eye.JPG",0)
# 获取模板图像的宽度和高度
th,tw = template.shape[::]
# 匹配获得结果
result = cv2.matchTemplate(img,template,cv2.TM_CCOEFF)
# 找到最大值就是结果最好的位置
_,maxVal,_,maxLoc = cv2.minMaxLoc(result)
# 左上角坐标
topLeft = maxLoc
# 右下角坐标
bottomRight = topLeft[0]+tw,topLeft[1]+th
# 画框 需要左上角右下角 灰度值范围 和框的宽度
cv2.rectangle(img,topLeft,bottomRight,255,2)plt.subplot(121)
plt.imshow(template,cmap = 'gray')
plt.title("template_image")
plt.axis("off")plt.subplot(122)
plt.imshow(img,cmap = 'gray')
plt.title("result")
plt.axis("off")

在这里插入图片描述

多模版匹配

多模板匹配会有多个解,所以需要按照下面这个步骤去解决问题:
(第一步)cv2.matchTemplate选择method
(第二步)把筛选结果放入np.where(阈值)函数进行找所有满足阈值的解
(第三步)使用 for in zip的方式把解中的结果找出来
(第四步)找左上角坐标与 右下角坐标
(第五步)使用使用cv2.rectangle画白色标记

import cv2
import numpy as np
import matplotlib.pyplot as plt
img =cv2.imread('moudle.JPG',0)
template = cv2.imread("eye.JPG",0)
# 获取模板图像的宽度和高度
th,tw = template.shape[::]
# 匹配获得结果
result = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)# 设置阈值
threshold = 0.9
# 把筛选结果放入np.where(阈值)函数进行找所有满足阈值的解
loc = np.where(result>=threshold)# 使用 for in zip的方式把解中的结果找出来
for pt in zip(*loc[::-1]):# 左上角坐标topLeft = pt# 右下角坐标bottomRight = topLeft[0]+tw,topLeft[1]+th# 画框 需要左上角右下角 灰度值范围 和框的宽度cv2.rectangle(img,topLeft,bottomRight,255,2)plt.subplot(121)
plt.imshow(template,cmap = 'gray')
plt.title("template_image")
plt.axis("off")plt.subplot(122)
plt.imshow(img,cmap = 'gray')
plt.title("result")
plt.axis("off")

在这里插入图片描述

致谢

本文参考了一些博主的文章,博取了他们的长处,也结合了我的一些经验,对他们表达诚挚的感谢,使我对 OpenCV模板匹配 有更深入的了解,也推荐大家去阅读一下他们的文章。纸上学来终觉浅,明知此事要躬行:
OpenCV第十章——模板匹配

http://www.yayakq.cn/news/354413/

相关文章:

  • 先做网站还是先域名备案wordpress ddns
  • 网站建设跑业务网站建设方案模板范文
  • 有的网站打开的是html结尾的路径有的不是wordpress主题页面底部编辑
  • 杭州外贸网站建设公司价格企业网站美工设计
  • 科技感的网站为什么要网站建设
  • 农业电商网站建设南昌网站建设企业
  • 黄岛做网站哪家好南京网站建设推广
  • 广州论坛网站建设域名价格预估
  • 河南艾特软件 网站建设什么是自适应网站
  • 网站开发目录大众点评网怎么做团购网站
  • 网站备案风险如何向百度提交站点收录信息
  • 江都网站制作图解asp.net网站开发实战
  • 枣庄建设网站海口企业网站建设制作哪家专业
  • 网站开发公司杭州网站建设以鹦鹉做头像的网站
  • 广州网站建设哪家强创建全国文明城市调查问卷答案
  • asp图片网站源码织梦装修设计网站模板
  • 网站优化都是怎么做的开发板公测的更新频率
  • 盘锦网站建设优化百度快照是什么
  • 门户网站设计行业oa 开发
  • 南宁网站怎么做seo国际市场那个app可以看
  • vs2017 做网站无极在线最新招聘兼职
  • 开发门户网站辽宁网站建设墨子
  • 网站形式的具体例子搬瓦工装WordPress
  • 品牌推广计划wordpress 主机优化
  • 济南城市建设集团网站合肥网站建设公司哪家好
  • dede做的网站被植入广告多国语言网站
  • 赤壁市建设工程造价信息价网站查询精品课程网站建设项目验收单
  • 安徽省建设工程信息网官方网站河南省招标投标信息网官网
  • 公司网站建设分录怎样建立一个自己的网站免费
  • 做网站 需要工信部备案吗高端网站建设找哪个公司