基于opencv4.5多目标/多角度与多尺度模板匹配(含源码)
时间: 2023-10-08 12:03:01 浏览: 214
基于Opencv实现的模板匹配与特征点匹配python源码(SIFT、ORB、AKAZE、SURF).zip
基于OpenCV 4.5实现多目标/多角度与多尺度的模板匹配的源码如下:
```python
import cv2
import numpy as np
# 读取模板图像
template = cv2.imread("template.jpg", 0)
# 读取待匹配图像
image = cv2.imread("image.jpg", 0)
# 获取模板图像的尺寸
w, h = template.shape[::-1]
# 进行多目标/多角度模板匹配
res = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)
# 根据匹配结果在原图像上绘制矩形框
for pt in zip(*loc[::-1]):
cv2.rectangle(image, pt, (pt[0] + w, pt[1] + h), (0, 255, 0), 2)
# 显示结果图像
cv2.imshow("Result", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
说明:
1. 首先,使用`cv2.imread()`函数读取待匹配的模板图像和目标图像,并将其转换为灰度图像。
2. 获取模板图像的尺寸`w, h`,并使用`cv2.matchTemplate()`函数进行模板匹配。匹配方法使用`cv2.TM_CCOEFF_NORMED`,它将返回匹配结果的相关性矩阵。
3. 设置匹配阈值`threshold`,并使用`np.where()`函数找到所有匹配结果中相关性大于等于阈值的位置。
4. 在原图像上使用`cv2.rectangle()`函数绘制矩形框,标记出匹配到的目标位置。
5. 最后,使用`cv2.imshow()`函数显示结果图像,并使用`cv2.waitKey()`和`cv2.destroyAllWindows()`函数等待用户按下键盘,并关闭窗口。
该源码可实现多目标/多角度和多尺度的模板匹配功能,根据模板图像在待匹配图像中的匹配程度,将匹配结果可视化在图像中。可以根据需要调整阈值参数和匹配方法等参数,以获得更好的匹配效果。
阅读全文