OpenCV计算机视觉 07 图像的模块匹配

news/2025/1/10 20:45:27/

在做目标检测、图像识别时,我们经常用到模板匹配,以确定模板在输入图像中的可能位置

API函数

cv2.matchTemplate(image, templ, method, result=None, mask=None)

参数含义:

image:待搜索图像

templ:模板图像

method:计算匹配程度的方法,可以有:

        TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;匹配越好,值越小;匹配越差,值越大。

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

        TM_SQDIFF_NORMED 归一化平方差匹配法,匹配越好,值越小;匹配越差,值越大。

        TM_CCORR_NORMED 归一化相关匹配法,数值越大表明匹配程度越好。

    -> TM_CCOEFF_NORMED 归一化相关系数匹配法,数值越大表明匹配程度越好。

比如我要在可口可乐瓶中匹配出如下的可口可乐商标,这么做呢

可口可乐瓶:

要匹配的商标:

import cv2
# 读取名为'cola.png'的图像作为原图
kele = cv2.imread('cola.png')  
# 读取名为'co_t.png'的图像作为模板
template = cv2.imread('template.png')  
​
cv2.imshow('kele', kele)  # 显示原图
cv2.imshow('c', template)  # 显示模板
cv2.waitKey(0)  # 等待按键
​
h, w = template.shape[:2]  # 获取模板的高度和宽度
# 在原图中匹配模板
res = cv2.matchTemplate(kele, template, cv2.TM_CCOEFF_NORMED)
# 获取匹配结果中的最小值、最大值及对应的位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)  
top_left = max_loc  # 最大匹配值的位置作为矩形的左上角
# 计算矩形的右下角
bottom_right = (top_left[0] + w, top_left[1] + h)  
# 在原图上绘制矩形
kele_template = cv2.rectangle(kele, top_left, bottom_right, (0, 255, 0), 2)  
cv2.imshow('k', kele_template)  # 显示绘制了矩形的原图
cv2.waitKey(0)  # 等待按键

输出:


http://www.ppmy.cn/news/1562054.html

相关文章

Mesa llvmpipe和softpipe对比

Mesa 后端性能分析:LLVM vs Software Pipe 当调试没有显卡的时候,可以使用cpu软件模拟的mesa-3d,后端采用kms_swrast_dri.so,发现管线使用llvmpipe的速度明显优于softpipe; 背景介绍 Mesa 是一个开源的图形库&#xf…

RapidTable release v1.0.3

引言 经过几日来的不懈努力,RapidTable 库终于迎来了 1.0 系列。 RapidTable 库是专门用来文档类图像的表格结构还原,表格结构模型均属于序列预测方法,结合 RapidOCR,将给定图像中的表格转化对应的 HTML 格式。 效果展示 模型列…

Http协议封装

Myhttp封装http协议 源代码 #include <iostream> #include <cstring> #include <string> #include <thread> #include <atomic> #include <fstream> // 添加文件操作头文件#ifdef _WIN32 #include <winsock2.h> #include <ws2t…

HTML5实现好看的博客网站、通用大作业网页模板源码

HTML5实现好看的博客网站、通用大作业网页模板源码 前言一、设计来源1.1 主界面1.2 列表界面1.3 文章界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的博客网站、通用大作业网页模板源码&#xff0c;博客网站源码&#xff0c;HTML模板源码&#xff0…

Go语言的 的设计模式(Design Patterns)核心知识

Go语言的设计模式&#xff08;Design Patterns&#xff09;核心知识 在软件开发中&#xff0c;设计模式是通过对解决特定问题的方法进行总结&#xff0c;归纳出的一些通用解决方案。设计模式并不是代码的成品&#xff0c;而是适用于特定场景的模板。Go语言&#xff08;Golang&…

基于Qt/C++二维码生成器(附工程源码链接)

简介 本项目是一个基于C和Qt框架开发的二维码生成器。它通过简单的用户交互&#xff0c;能够快速生成二维码图像并显示在用户界面上。以下将从代码结构、实现逻辑和功能扩展等方面对该项目进行详细讲解&#xff0c;便于集成到其他程序中。 项目代码结构 项目的主要文件包括以…

3. ML机器学习

1.人工智能与机器学习的关系 机器学习是人工智能的一个重要分支&#xff0c;是人工智能的一个子集。它无需显式编程&#xff0c;而是通过数据和算法使机器能够自动学习和改进&#xff0c;从而实现智能行为。机器学习依赖于算法来识别数据中的模式&#xff0c;并通过这些模式做出…

Android adb shell GPU信息

Android adb shell GPU信息 先 adb shell 进入控制台。 然后&#xff1a; dumpsys | grep GLES Android adb shell命令捕获systemtrace_android 抓trace-CSDN博客文章浏览阅读2.5k次&#xff0c;点赞2次&#xff0c;收藏8次。本文介绍了如何使用adbshell命令配合perfetto工…