ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器视觉——OpenCV案例分析基础(八)(模式匹配与背景减除)

2021-12-05 17:31:25  阅读:243  来源: 互联网

标签:img 背景 减除 templ OpenCV cv 模式匹配


模式匹配与背景减除

一、理论分析

模式匹配简单来说就是我想在一副地图上找到一个我已知地名的位置,更通俗来叔也就是查地图。这其中也包括需要查找时具有一定的变通性,比如我想在一个图里找到狗狗的位置,那么无论这只狗狗的动作和表情与待查找的不一致,也需要精准的匹配。而对于简单的模式匹配来说很难实现,以为它仅仅会计算不同特征之间的相似度,很难变通。但是我们同样可以利用这一点来对图像通过模式识别来进行筛选与甄别。
那么背景减除(Background Subtraction)是许多基于计算机视觉的任务中的主要预处理步骤。就是我在做视频的目标识别时,主要是对动作的事物进行识别,而不考虑背影的因素,所以可以通过背景减除去掉背景在目标识别运算,从而提高识别效率。

二、代码分析

2.1 模式匹配

from cv2 import cv2 as cv

img = cv.imread("2021-12-02-Pictures/2021-12-02-Pictures/background.jpg")
templ = cv.imread("2021-12-02-Pictures/2021-12-02-Pictures/template.png")
# templ = cv.flip(templ,1) #图像的翻转
# templ = cv.rotate(templ,cv.ROTATE_180) #图像的旋转
# templ = cv.resize(templ,None,fx=1.2,fy=1.4) #图像大小的变换
width,height = templ.shape[:2]
results = cv.matchTemplate(img,templ,cv.TM_SQDIFF_NORMED) # 按照标准平方差方式匹配
# print(results)
minVal,maxVal,minloc,maxloc = cv.minMaxLoc(results)
resultsPoints1 = minloc # 将最小值坐标当做最佳匹配区域的左上角点坐标
resultsPoints2 = (resultsPoints1[0]+width,resultsPoints1[1]+height) # 计算出最佳匹配区域的右下角点坐标
cv.rectangle(img,resultsPoints1,resultsPoints2,(0,0,255),2) # 在最佳匹配区域位置绘制红色方框,线宽为2像素

cv.imshow('img',img)
cv.imshow('templ',templ)
cv.waitKey(0)
cv.destroyAllWindows()

运行结果如下:
在这里插入图片描述
在这里插入图片描述

2.2 背景减除

from cv2 import cv2 as cv
bgsubmog = cv.createBackgroundSubtractorMOG2() #创建背景减除方法 
mask = bgsubmog.apply(img) #去除背景后的图像

该方法主要应用在视频中的模式识别中,这里不好举例。会在后期的综合案列中对应讲解。

标签:img,背景,减除,templ,OpenCV,cv,模式匹配
来源: https://blog.csdn.net/qq_26274961/article/details/121731186

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有