用圆形检测而非模板匹配
时间: 2024-03-09 13:45:35 浏览: 82
好的,以下是使用圆形检测来识别足球并返回其坐标的代码:
```python
import cv2
import numpy as np
# 加载足球图片
img = cv2.imread('soccer.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 高斯滤波,去除噪声
blur = cv2.GaussianBlur(gray, (5, 5), 0)
# 圆形检测
circles = cv2.HoughCircles(blur, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
# 如果找到足球
if circles is not None:
# 取整并转换为 (x, y) 坐标
circles = np.round(circles[0, :]).astype("int")
# 循环遍历所有圆形并绘制出来
for (x, y, r) in circles:
cv2.circle(img, (x, y), r, (0, 255, 0), 2)
# 显示图像并返回足球的中心坐标
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
print("soccer coordinates: ({}, {})".format(x, y))
# 如果没有找到足球
else:
print("soccer not found!")
```
你可以将它保存为一个 Python 脚本并运行,将足球图片命名为 `soccer.jpg` 并与脚本放在同一个目录下,程序将会返回足球的中心坐标。
阅读全文