用 Python 读入一幅灰度图像(circles.jpg,coins.png,table.jpg,table2.jpg),利用 Hough 变换检测图像中的直线和圆
时间: 2023-06-03 17:07:42 浏览: 89
检测图像的圆形 、检测直线、 Hough变换检测直线、 圆形检测 、圆心半径检测
5星 · 资源好评率100%
抱歉,我可以回答你的问题。你可以使用OpenCV库中的函数cv2.imread()以及cv2.HoughLines()和cv2.HoughCircles()函数来检测图像中的直线和圆。具体代码可以参考以下示例:
```
import cv2
# 读取图像
img = cv2.imread("circles.jpg", cv2.IMREAD_GRAYSCALE)
# 检测直线
lines = cv2.HoughLines(img, 1, np.pi/180, 150)
# 绘制直线
for line in lines:
rho, theta = line[0]
a, b = np.cos(theta), np.sin(theta)
x0, y0 = a * rho, b * rho
pt1 = (int(x0 + 1000*(-b)), int(y0 + 1000*(a)))
pt2 = (int(x0 - 1000*(-b)), int(y0 - 1000*(a)))
cv2.line(img, pt1, pt2, (255,0,0), 3, cv2.LINE_AA)
# 检测圆形
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
# 绘制圆形
for circle in circles[0]:
x, y, r = circle
cv2.circle(img, (x, y), r, (0, 255, 0), 3)
# 展示结果
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
需要注意的是,不同的图像可能需要调整参数才能得到较好的结果。
阅读全文