你提到的 模板匹配(Template Matching),在不同领域里有不同的含义,我帮你分几类解释一下,你可以告诉我你具体是想在哪个方向用:
1. 图像处理中的模板匹配
在计算机视觉里,模板匹配是一种 基于滑动窗口的匹配方法:
- 给定一个小图像(模板,template),在一张大图像中去寻找它的位置。
- 常用在 目标检测、字符识别、人脸检测 等任务中。
- OpenCV 里常用函数:
import cv2 img = cv2.imread('big.png', 0) # 大图 template = cv2.imread('small.png', 0) # 模板图 result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED) # 找到匹配位置 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) top_left = max_loc h, w = template.shape bottom_right = (top_left[0] + w, top_left[1] + h) cv2.rectangle(img, top_left, bottom_right, 255, 2) cv2.imwrite("matched.png", img)
- 常见的匹配方法:
cv2.TM_SQDIFF
:平方差,越小越相似cv2.TM_CCOEFF_NORMED
:相关系数归一化,越接近 1 越相似
2. 字符串/正则里的模板匹配
- 用正则表达式对字符串进行模式识别。
import re text = "My phone number is 123-456-7890." pattern = r"\d{3}-\d{3}-\d{4}" # 模板 match = re.search(pattern, text) if match: print("匹配到:", match.group())
3. 软件工程中的模板匹配
- 指 代码模板复用 或 设计模式套用,例如在 C++/Java 中利用模板泛型匹配不同的数据类型。
👉 你想让我帮你详细展开 图像处理的模板匹配(OpenCV 实现),还是 字符串模式匹配(正则表达式)呢?
发表回复