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

外贸建设网站制作福州seo排名优化

外贸建设网站制作,福州seo排名优化,怎么做网站识图验证码,荆州做网站的公司【1】引言 前序学习进程中,已经探索了使用cv.matchTemplate()函数实现最佳图像匹配的技巧,并且成功对两个目标进行了匹配。 相关文章链接为:python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像…

【1】引言

前序学习进程中,已经探索了使用cv.matchTemplate()函数实现最佳图像匹配的技巧,并且成功对两个目标进行了匹配。

相关文章链接为:python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像匹配-CSDN博客

实际上,我们在这篇文章中重点体会了匹配效果,却没有真正剖析代码背后的运行逻辑。今天这篇文章的目标就是对代码背后逻辑稍微追溯一下。

【2】官网教程

【2.1】cv2.matchTemplate()函数

点击下方链接,直达cv2.matchTemplate()函数官网链接:

图1 cv2.matchTemplate()函数官网说明

图1所示的cv2.matchTemplate()函数官网说明中,有三处做了标记,它们彼此交织在一起。需要解读:

a.待匹配的大图像I大小为W X H,使用的模板T像素大小为w x h,获得的匹配效果R对应的的矩阵大小为(W-w+1,H-h+1);

b.使用不同的匹配方法后,再用minMaxLoc函数读取最佳匹配效果对应的左上角坐标时,有时候取最小值,如TM_SQDIFF,有时候取最大值,如TM_CCORR和TM_CCOEFF。

c.解读匹配方法请看第2.2节。

【2.2】cv2.matchTemplate()函数

点击链接,直达函数对匹配方法的解读:OpenCV: Object Detection

在这个页面,会看到不同的函数说明:

图2 匹配方法的数学公式

由图2可见,TM_SQDIFF采用的是减法计算,而TM_CCORR和TM_CCOEFF采用的乘法计算,所以相似度高的时候,TM_SQDIFF方法的计算值往往会接近0,而TM_CCORR和TM_CCOEFF方法就会在因为平方而取得更大的值。

所以“用minMaxLoc函数读取最佳匹配效果对应的左上角坐标时,有时候取最小值,如TM_SQDIFF,有时候取最大值,如TM_CCORR和TM_CCOEFF”就获得了解释。

【3】代码测试

【3.1】代码回顾

首先直接引用前一篇文章的完整代码:

import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块# 读取图片
srcm = cv.imread('srcm.png') #读取图像srcx.png
srcg = cv.imread('srcg.png') #读取图像srcp.png
srcc = cv.imread('srcc.png') #读取图像srcp.png
rows,cols,cans=srcg.shape #读取图像属性
rowsc,colsc,cansc=srcc.shape #读取图像属性#匹配结果
results=cv.matchTemplate(srcm,srcg,cv.TM_CCORR_NORMED)
results1=cv.matchTemplate(srcm,srcc,cv.TM_CCORR_NORMED)#取值
minValue,maxValue,minLoc,maxLoc=cv.minMaxLoc(results)
minValuec,maxValuec,minLocc,maxLocc=cv.minMaxLoc(results1)#取最大坐标
resultPoint1=maxLoc
print("resultPoint1=",resultPoint1)#取最大坐标
resultPoint2=maxLocc
print("resultPoint2=",resultPoint2)#定义新坐标
resultPoint3=(resultPoint1[0]+cols,resultPoint1[1]+rows)
print("resultPoint3=",resultPoint3)#定义新坐标
resultPoint4=(resultPoint2[0]+colsc,resultPoint2[1]+rowsc)
print("resultPoint4=",resultPoint4)#作标记
cv.circle(srcm,(250,250),30,(0,255,0))
cv.rectangle(srcm,resultPoint1,resultPoint3,(0,255,0),2)
cv.rectangle(srcm,resultPoint2,resultPoint4,(200,180,55),2)# 显示结果
cv.imshow('srcm ', srcm)
cv.imshow('srcg ', srcg)
cv.imshow('srcc ', srcc)
cv.imwrite('srcgc.png',srcm)#窗口控制
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

待匹配的图像I为:

图3 待匹配图像I:srcm.png

图4 模板T1 srcg.png

图5 模板T2 srcc.png

图6 匹配效果 srcgc.png  

上述代码全部使用了cv2.TM_CCORR_NORMED方法,所以需要调用最大值来代表最佳匹配效果的左上角坐标。

未验证不用方法对应最佳匹配效果的左上角坐标,现在应增加匹配方法。

【3.2】代码扩展

在直接引用前一篇文章的完整代码的基础上,不仅要增加匹配方法,还要显示出匹配结果。

#匹配计算
results=cv.matchTemplate(srcm,srcg,cv.TM_SQDIFF_NORMED) #TM_SQDIFF匹配方法
results1=cv.matchTemplate(srcm,srcc,cv.TM_CCORR_NORMED) #TM_CCORR匹配方法
print("result=",results) #输出匹配结果
print("result1=",results1) #输出匹配结果

代码先后使用了TM_SQDIFF和TM_CCORR两种方法,并且要求输出了匹配结果。

然后读取了调用minMaxLoc()函数对结果渠道的各个参数值:

#取值
minValue,maxValue,minLoc,maxLoc=cv.minMaxLoc(results)
minValuec,maxValuec,minLocc,maxLocc=cv.minMaxLoc(results1)
print("result.minValue=",minValue)
print("result1.minValuec=",minValuec)
print("result.maxValue=",maxValue)
print("result1.maxValuec=",maxValuec)
print("result.minLoc=",minLoc)
print("result1.minLocc=",minLocc)
print("result.maxLoc=",maxLoc)
print("result1.maxLocc=",maxLocc)

然后根据先前的分析思路,取最佳匹配矩阵的左上角坐标。

这时候TM_SQDIFF取最小值,TM_CCORR方法取最大值,之后还要叠加模板的大小,来画出整个匹配区域:

#取最小坐标
resultPoint1=minLoc
print("resultPoint1=",resultPoint1)#取最大坐标
resultPoint2=maxLocc
print("resultPoint2=",resultPoint2)#定义新坐标
resultPoint3=(resultPoint1[0]+cols,resultPoint1[1]+rows)
print("resultPoint3=",resultPoint3)#定义新坐标
resultPoint4=(resultPoint2[0]+colsc,resultPoint2[1]+rowsc)
print("resultPoint4=",resultPoint4)

之后为了突出匹配点,以最小和最大坐标Wie圆心,分别绘制半径为10和20的圆形:

#作标记
cv.circle(srcm,(minLoc),10,(255,255,0))
cv.circle(srcm,(maxLoc),20,(255,255,0))
cv.circle(srcm,(minLocc),10,(0,255,255))
cv.circle(srcm,(maxLocc),20,(0,255,255))
cv.circle(srcm,(250,250),30,(0,255,0))
cv.rectangle(srcm,resultPoint1,resultPoint3,(0,255,0),2)
cv.rectangle(srcm,resultPoint2,resultPoint4,(200,180,55),2)

然后输出所有图像:

# 显示结果
cv.imshow('srcm ', srcm)
cv.imwrite('srcgcw.png',srcm)
#窗口控制
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

代码运行后,获得的匹配效果为:

图7 匹配效果srcgcw.png

由图7可见,TM_SQDIFF取最小值,TM_CCORR方法取最大值获得的最佳匹配图像实现了预期效果。

【4】细节说明

上述3.2节读取到的部分匹配结果矩阵为:

 图8 匹配结果矩阵

由图8可见,每个矩阵内部给出了很多值,这表明在矩阵内部,图像和模板是按照像素点逐个进行比对匹配。

【5】总结

掌握了python+opencv调用使用cv.matchTemplate()函数实现最佳图像匹配的执行原理和过程。

 

http://www.hkea.cn/news/227707/

相关文章:

  • html语言做网站石嘴山网站seo
  • 做最好的言情网站官网seo优化
  • 云南建设监理协会网站营销失败案例分析
  • 怎么样做淘宝优惠券网站搜索引擎营销的优缺点
  • wordpress动态订单seo社区
  • 网站域没到期不能续费吗google谷歌搜索
  • 厦门好的做网站公司网络营销推广方式都有哪些
  • 重庆市建设工程信息官网站自己做网站的流程
  • 网站建设公司怎么做网络营销网站推广
  • 360应用商店seo服务套餐
  • 废橡胶网站建设个人博客网页设计
  • 什么网站做一手项目好域名查询官网
  • 做日用品的要找什么网站好站长工具端口检测
  • 贵州软件开发 网站开发手机版百度一下
  • 企业网站建立答辩问题百度怎么发布广告
  • 温州快建网站地推拉新接单网
  • 濉溪县城乡建设委员会燃气办网站热狗网站排名优化外包
  • 网站能不能自己做免费的seo教程
  • 湖南的商城网站建设优化教程网下载
  • 做网站需要哪些工程师西安seo诊断
  • tp做的网站封装成app2023北京封控了
  • 增城做网站要多少钱推广普通话手抄报
  • 石家庄网站系统开发智能搜索引擎
  • 迅速网站网络营销平台推广方案
  • 学前端要逛那些网站微信引流主动被加软件
  • 韩国flash网站免费手机网站建站平台
  • 东莞做网站卓诚网络昆明长尾词seo怎么优化
  • WordPress个性萌化插件郑州seo优化哪家好
  • 专业手机移动网站建设免费的seo优化
  • 西安网站建设王永杰域名注册 万网