python实现 opencv 学习笔记---模板匹配matchTemplate

 左边是顺嫔和皇上的照片,裁剪出顺嫔妾的脸,用模板匹配对原图匹配

选择匹配的三种方法效果如下,代码在最后

 网上剽窃的图:

具体方法计算公式:

下面是opencv手册的,

T是匹配图, I是原图, R 是结果

 结果也是这个函数返回值

这是打印出result的值,下面一张图是计算公式,通过公式也可以知道匹配程度在什么情况下最好

 网上的图。。如下函数

返回后咱们需要最值的位置,也即坐标 (x,y),然后根据模版(匹配的图片)宽高找到原图(x,y)对角线上另外一点

通过对角线画矩形,在原图标记

import cv2 as cv
import numpy as np


def template_image():
    target = cv.imread("D://work//shunping.jpg")
    tpl = cv.imread("d://work//shunping_face.jpg")
    #cv.imshow("modul", tpl)
    #cv.imshow("yuan", target)
    methods = [cv.TM_SQDIFF_NORMED, cv.TM_CCORR_NORMED, cv.TM_CCOEFF_NORMED]
    th, tw = tpl.shape[:2]
    for md in methods:
        result = cv.matchTemplate(target, tpl, md)
        min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result)
        if md == cv.TM_SQDIFF_NORMED:
            tl = min_loc
        else:
            tl = max_loc
        br = (tl[0] + tw, tl[1] + th)
        cv.rectangle(target, tl, br, [0, 0, 0])
        cv.imshow("pipei"+np.str(md), target)


template_image()
cv.waitKey(0)
cv.destroyAllWindows()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java Web

最长公共子序列问题

问题描述: 求两个字符序列的公共最长子序列。 ---- 最长公共子串 在回到子序列问题之前,先来了解一下子串的问题。 例如,HISH和FISH两个字符序列的公...

3954
来自专栏C/C++基础

Dijkstra算法求单源最短路径

在一个连通图中,从一个顶点到另一个顶点间可能存在多条路径,而每条路径的边数并不一定相同。如果是一个带权图,那么路径长度为路径上各边的权值的总和。两个顶点间路径长...

3321
来自专栏深度学习与计算机视觉

理解ResNet结构与TensorFlow代码分析

该博客主要以TensorFlow提供的ResNet代码为主,但是我并不想把它称之为代码解析,因为代码和方法,实践和理论总是缺一不可。 github地址,其中...

8377
来自专栏数说工作室

【SAS Says】扩展篇:IML(2)

上一篇“高级篇:IML(1)”发出来之后,有朋友反映东西东西太简单了,根本不能算“高级”。想想也是,暂时还没有介绍太复杂的SAS程序,于是决定将本篇定为“扩展篇...

3036
来自专栏小樱的经验随笔

MATLAB命令大全+注释小结

一、常用对象操作:除了一般windows窗口的常用功能键外。 1、!dir 可以查看当前工作目录的文件。   !dir& 可以在dos状态下查看。 2、who ...

3454
来自专栏Petrichor的专栏

leetcode: 62. Unique Paths

1162
来自专栏人工智能

Tensorflow下Char-RNN项目代码详解

前言 Char-RNN,字符级循环神经网络,出自于Andrej Karpathy写的The Unreasonable Effectiveness of Recu...

66310
来自专栏PPV课数据科学社区

【学习】K近邻算法基础:KD树的操作

Kd-树概念 Kd-树其实是K-dimension tree的缩写,是对数据点在k维空间中划分的一种数据结构。其实,Kd-树是一种平衡二叉树。 举一示例: 假设...

3255
来自专栏蜉蝣禅修之道

Levenshtein distance最小编辑距离算法实现

7504
来自专栏漫漫深度学习路

tensorflow学习笔记(三十九):双向rnn

tensorflow 双向 rnn 如何在tensorflow中实现双向rnn 单层双向rnn ? 单层双向rnn (cs224d) tensorfl...

8495

扫码关注云+社区

领取腾讯云代金券