python+opencv 图像识别匹配

1.图像模板匹配

#使用matchTemplate对原始灰度图像和图像模板进行匹配

res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)

#设定阈值

threshold =0.9

#res大于90%     loc是一个坐标数组,[y] [x] 结构

loc = np.where(res >= threshold)

模板匹配是在图像中寻找目标的方法之一

模板匹配的工作方式

模板匹配的工作方式跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像上滑动图像块对实际的图像块和输入图像进行匹配。

假设我们有一张100×100的输入图像,有一张10×10的模板图像,查找的过程是这样的:

(1)从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像;

(2)用临时图像和模板图像进行对比,对比结果记为c;

(3)对比结果c,就是结果图像(0,0)处的像素值;

(4)切割输入图像从(0,1)至(10,11)的临时图像,对比,并记录到结果图像;

(5)重复(1)~(4)步直到输入图像的右下角。

模板匹配的匹配方式

    在OpenCv和EmguCv中支持以下6种对比方式:

    CV_TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。

    CV_TM_CCORR 相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。

    CV_TM_CCOEFF 相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。

    CV_TM_SQDIFF_NORMED 归一化平方差匹配法

    CV_TM_CCORR_NORMED 归一化相关匹配法

    CV_TM_CCOEFF_NORMED 归一化相关系数匹配法

2. 画矩形   

利用cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)画出矩行

参数解释

第一个参数:img是原图

第二个参数:(x,y)是矩阵的左上点坐标

第三个参数:(x+w,y+h)是矩阵的右下点坐标

第四个参数:(0,255,0)是画线对应的rgb颜色

第五个参数:2是所画的线的宽度

    原文作者:papayaya
    原文地址: https://www.jianshu.com/p/a87b728b62e3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞