`
huangyongxing310
  • 浏览: 499074 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

opencv 模板匹配(在大图中找小图)

 
阅读更多
# -*-encoding:utf-8-*-
import pytesseract
from PIL import Image
from PIL import ImageFilter
from PIL import ImageFont
from PIL import ImageDraw
import numpy as np
from PIL import Image

import cv2


def main():
    # 使用模板匹配在图像中寻找物体
    # OpenCV函数:cv2.matchTemplate(), cv2.minMaxLoc()
    # 模板匹配就是用来在大图中找小图,也就是说在一副图像中寻找另外一张模板图像的位置

    #  =================================模板匹配
    img = cv2.imread('learn.jpg', 0)
    template = cv2.imread('learn_1.jpg', 0)
    h, w = template.shape[:2]  # rows->h, cols->w
    print("h = " ,h )
    print("w = ", w)

    # 相关系数匹配方法:cv2.TM_CCOEFF
    res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF)

    # 平方差匹配CV_TM_SQDIFF:用两者的平方差来匹配,最好的匹配值为0
    # 归一化平方差匹配CV_TM_SQDIFF_NORMED
    # 相关匹配CV_TM_CCORR:用两者的乘积匹配,数值越大表明匹配程度越好
    # 归一化相关匹配CV_TM_CCORR_NORMED
    # 相关系数匹配CV_TM_CCOEFF:用两者的相关系数匹配,1
    # 表示完美的匹配,-1
    # 表示最差的匹配
    # 归一化相关系数匹配CV_TM_CCOEFF_NORMED

    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    #cv2.minMaxLoc()函数可以得到最大匹配值的坐标,以这个点为左上角角点,模板的宽和高画矩形就是匹配的位置了
    print("min_val = ", min_val)
    print("max_val = ", max_val)#最大匹配值
    print("min_loc = ", min_loc)
    print("max_loc = ", max_loc)#最大左上角坐标

    left_top = max_loc  # 左上角
    right_bottom = (left_top[0] + w, left_top[1] + h)  # 右下角
    cv2.rectangle(img, left_top, right_bottom, 255, 2)  # 画出矩形位置

    cv2.imshow('img', img)
    cv2.waitKey(0)

if __name__ == '__main__':
    main()



# -*-encoding:utf-8-*-
import pytesseract
from PIL import Image
from PIL import ImageFilter
from PIL import ImageFont
from PIL import ImageDraw
import numpy as np
from PIL import Image

import cv2


def main():
    # 使用模板匹配在图像中寻找物体
    # OpenCV函数:cv2.matchTemplate(), cv2.minMaxLoc()
    # 模板匹配就是用来在大图中找小图,也就是说在一副图像中寻找另外一张模板图像的位置

    #  =================================匹配多个物体,模板匹配
    # 1.读入原图和模板
    img_rgb = cv2.imread('mario.jpg')
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    template = cv2.imread('mario_coin.jpg', 0)
    h, w = template.shape[:2]
    # 2.标准相关模板匹配
    res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
    threshold = 0.8
    # 3.这边是Python/Numpy的知识,后面解释
    loc = np.where(res >= threshold)  # 匹配程度大于%80的坐标y,x,loc是先y坐标再x坐标

    for pt in zip(*loc[::-1]):  # *号表示可选参数,,所以用loc[::-1]翻转一下,然后再用zip函数拼接在一起。
        right_bottom = (pt[0] + w, pt[1] + h)
        cv2.rectangle(img_rgb, pt, right_bottom, (0, 0, 255), 2)

    cv2.imshow('img_rgb', img_rgb)
    cv2.waitKey(0)
    
if __name__ == '__main__':
    main()








分享到:
评论

相关推荐

    C#+halcon和opencv模板匹配

    标题 "C#+halcon和opencv模板匹配" 涉及到的是在C#编程环境中,利用两种不同的图像处理库——Halcon与OpenCV——进行模板匹配的技术。模板匹配是一种计算机视觉技术,主要用于寻找一个图像(目标图像)在另一个大...

    基于QT+Opencv模板匹配支持(缩放、旋转)

    在计算机视觉领域,模板匹配是一种常见的图像处理技术,用于在大图像中寻找与给定模板相似的小区域。这个过程在目标检测、图像识别、视频分析等应用场景中非常有用。在本文中,我们将深入探讨如何使用QT作为图形用户...

    python OpenCV 模板匹配,单目标,多目标匹配,在一幅图像中找出与模板匹配的对象

    1、单模板单目标,多目标匹配 2、多模板,多目标匹配 3、通过OpenCV模板匹配方法,实现图片的匹配功能 4、相关系数匹配,最小平方差匹配 5、matchTemplate

    opencv金字塔模板匹配算法

    **OpenCV 金字塔模板匹配算法**是计算机视觉领域中一种常用的技术,用于在大图像中寻找小图像(模板)的精确位置。这个算法的核心在于它利用了图像金字塔的概念,通过多尺度分析来提高搜索效率和匹配精度。OpenCV库...

    基于opencv的模板匹配

    其中,模板匹配是一种常用的技术,用于在大图像中寻找与小图像模板相似的区域。 **模板匹配的基本概念** 模板匹配是一种图像处理技术,用于在大图像中定位与给定模板图像相同或相似的子区域。它通过计算模板图像与...

    C# OpenCvSharp 模板匹配.rar

    模板匹配是一种图像搜索技术,常用于在大图像中寻找与小图像模板相似的区域。这个过程通常包括以下步骤: 1. **初始化**: 首先,我们需要加载主图像和模板图像。在C#中,使用`Mat`类来表示图像,通过`Imread`方法...

    基于opencv 的模板匹配类

    在图像分析和处理中,模板匹配是一种常用的技术,用于在大图像中寻找与指定小图像(模板)相似的区域。基于OpenCV封装的模板匹配类,我们可以更方便地实现这一功能,尤其是在二值化匹配和灰度匹配等场景中。 **一、...

    OpenCV模板匹配matchTemplate的实现

    OpenCV的模板匹配是一种基础的图像处理技术,主要通过将一个模板图像在另一个较大的图像上移动,通过某种算法计算两者的相似度,从而确定模板图像在大图像中的位置。该方法广泛应用于图像识别领域,比如物体识别、...

    Project2_opencv模板匹配_opencv_模板匹配_

    在给定的“Project2_opencv模板匹配_opencv_模板匹配_”项目中,我们将深入探讨如何利用OpenCV实现这一功能。 首先,我们需要了解模板匹配的基本原理。它基于像素级别的相似度比较,计算查询图像和模板图像之间的...

    基于OpenCV多目标的模板匹配算法

    模板匹配是通过计算一幅大图像(称为源图像)和一个小图像(称为模板图像或查询图像)之间的相似度来找到源图像中与模板图像相匹配的区域。这个过程通常涉及到计算源图像和模板图像的某种相似性度量,如SSD(Sum of ...

    opencv多模板匹配

    "opencv多模板匹配"是OpenCV库中一个重要的功能,它允许开发者在一个图像中寻找多个已知模板的出现位置。这个技术在很多应用中都有广泛的应用,如图像识别、目标检测、图像搜索引擎等。 多模板匹配的基础是单模板...

    opencv模板匹配示例.rar

    在这个“opencv模板匹配示例.rar”压缩包中,我们可以预见到一个使用OpenCV进行模板匹配的示例代码,这通常用于在图像中寻找已知的小图像片段或者模式。 模板匹配是计算机视觉中的一个基础技术,它通过比较原图和...

    OpenCV模板匹配程序

    这是一个在图像处理领域广泛应用的技术,它允许我们在大图中查找并定位与已知小模板图像相匹配的区域。 模板匹配的基本思想是,给定一个模板图像和一个更大的搜索图像,计算模板图像在搜索图像中的每一个位置的...

    opencv模板匹配

    在这些方法中,模板匹配是一项重要的技术,它主要用于寻找一个已知的小图像(模板图像)在大图像(搜索区域)中的位置。这个过程涉及到对每个可能的位置进行比较,找出与模板图像最相似的区域。 模板匹配的基本步骤...

    基于OpenCv的旋转匹配

    传统的模板匹配方法往往假设目标模板在搜索图像中的位置和方向与原图完全一致,但在实际应用中,目标可能因视角变化而发生旋转。因此,旋转匹配成为一种必要的技术。 OpenCV中的`matchTemplate`函数是进行模板匹配...

    模板匹配+针尖检测+感兴趣区域_opencv模板匹配_opencv_针尖_图像处理opencv_

    首先,模板匹配是计算机视觉中的一个基础方法,主要用于在大图中寻找与小图(模板)相似的部分。在OpenCV中,我们可以使用`matchTemplate()`函数来执行这一操作。该函数接受两个参数:原图和模板,然后计算原图中每...

    opencv模板匹配.rar

    模板匹配是计算机视觉中的一个基本方法,用于在大图像中查找与已知模板相同或相似的小区域。在OpenCV中,可以使用`matchTemplate()`函数进行模板匹配。这个函数接受两个输入参数:原始图像和模板图像,然后返回一个...

    opencv模板匹配、图片比较

    "模板匹配"是OpenCV中的一个重要功能,它允许开发者在一张大图中寻找与指定小图(模板)匹配的区域。这个过程在很多应用场景中都非常有用,比如人脸识别、物体定位等。 在OpenCV中,模板匹配通常使用`matchTemplate...

    OpenCV模板匹配的方法识别手势

    模板匹配是一种图像搜索技术,它通过比较图像库中的小图像(模板)与大图像(搜索区域)的相似性来寻找模板在大图像中的位置。 首先,我们需要理解模板匹配的基本流程。这通常包括以下步骤: 1. **导入库**:使用...

    opencv 模板匹配法找人眼 人脸

    在“opencv 模板匹配法找人眼 人脸”这个主题中,我们将深入探讨如何利用OpenCV的模板匹配技术来定位人眼和人脸。 模板匹配是图像处理中的一种基本方法,主要用于在大图像中寻找与已知模板图像相匹配的区域。在人脸...

Global site tag (gtag.js) - Google Analytics