使用python opencv 的linemod,创建一个圆形模板,对名字为img.jpg的图像模板匹配
时间: 2024-02-03 15:11:33 浏览: 73
好的,下面是代码示例:
```python
import cv2
# 读取图像
img = cv2.imread('img.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 构建圆形模板
radius = 30
thickness = 5
template = cv2.circle(
img=None, center=(radius, radius), radius=radius-thickness, color=(255, 255, 255), thickness=thickness
)
# 进行模板匹配
result = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 绘制匹配结果
top_left = max_loc
bottom_right = (top_left[0] + radius*2, top_left[1] + radius*2)
cv2.rectangle(img, top_left, bottom_right, (0, 0, 255), 2)
# 显示图像
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
解释一下代码:
首先读取图片,将其转换为灰度图像。
接着构建一个圆形模板,这里使用 `cv2.circle` 函数,其中 `radius` 是圆形半径,`thickness` 是圆环宽度,`color` 是颜色值,`thickness` 是线条宽度。
然后将模板与原图进行匹配,这里使用的是 `cv2.matchTemplate` 函数,匹配方法为 `cv2.TM_CCOEFF_NORMED`。
最后,找到匹配结果的最大值即可,使用 `cv2.minMaxLoc` 函数实现。然后绘制匹配结果,这里使用的是 `cv2.rectangle` 函数。
运行代码,会弹出一个窗口显示匹配结果。
阅读全文