霍夫圆检测误差分析python代码
时间: 2023-06-15 21:06:37 浏览: 99
霍夫圆检测的误差分析可以通过计算检测到的圆与真实圆之间的距离来实现。下面是一个简单的Python代码示例,用于计算误差并绘制检测结果和真实圆。
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像并转换为灰度图像
img = cv2.imread('circle.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 绘制真实圆
img_copy = img.copy()
cv2.circle(img_copy, (100, 100), 50, (0, 255, 0), 2)
# 霍夫圆检测
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
if circles is not None:
circles = np.round(circles[0, :]).astype("int")
for (x, y, r) in circles:
# 绘制检测结果
cv2.circle(img, (x, y), r, (0, 0, 255), 2)
cv2.rectangle(img, (x - 5, y - 5), (x + 5, y + 5), (0, 0, 255), -1)
# 计算误差
distance = np.sqrt((x - 100) ** 2 + (y - 100) ** 2)
print('误差:', distance)
# 显示图像
plt.subplot(1, 3, 1)
plt.imshow(cv2.cvtColor(img_copy, cv2.COLOR_BGR2RGB))
plt.title('真实圆')
plt.subplot(1, 3, 2)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('检测结果')
plt.subplot(1, 3, 3)
plt.imshow(gray, cmap='gray')
plt.title('灰度图像')
plt.show()
```
在上面的代码中,我们首先读取一张包含一个圆的图像,并将其转换为灰度图像。然后,我们绘制真实圆,使用cv2.HoughCircles函数进行霍夫圆检测,并将检测到的圆绘制在图像上。在绘制检测结果时,我们还计算了检测到的圆与真实圆之间的距离,以便进行误差分析。最后,我们使用Matplotlib显示图像。