使cv2.matchTemplate具有旋转和尺度适应性,写出代码
时间: 2024-02-20 12:00:33 浏览: 96
以下是使用Python和OpenCV实现cv2.matchTemplate具有旋转和尺度适应性的代码示例:
```python
import cv2
import numpy as np
# 读取原始图像和模板图像
img = cv2.imread('image.jpg', 0)
template = cv2.imread('template.jpg', 0)
# 缩放模板图像
resized_template = cv2.resize(template, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
# 旋转模板图像
(h, w) = resized_template.shape[:2]
center = (w // 2, h // 2)
angle = 45
M = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated_template = cv2.warpAffine(resized_template, M, (w, h))
# 进行模板匹配
result = cv2.matchTemplate(img, rotated_template, cv2.TM_CCOEFF_NORMED)
# 找到最佳匹配位置
(minVal, maxVal, minLoc, maxLoc) = cv2.minMaxLoc(result)
(topLeft, bottomRight) = (maxLoc, (maxLoc[0] + w, maxLoc[1] + h))
# 在原始图像中标记最佳匹配位置
cv2.rectangle(img, topLeft, bottomRight, 255, 2)
# 显示结果
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们首先读取原始图像和模板图像,然后缩放模板图像和旋转模板图像,接着使用cv2.matchTemplate函数进行模板匹配,最后使用cv2.rectangle函数在原始图像中标记最佳匹配位置。
阅读全文