【发布时间】:2021-07-17 02:22:30
【问题描述】:
我想对该图像应用霍夫变换:1
我使用的代码如下:
cdst = cv2.cvtColor(hull_img, cv2.COLOR_GRAY2BGR)
lines = cv2.HoughLines(hull_img, 1, np.pi / 180, 200)
a,b,c = lines.shape
for i in range(a):
rho = lines[i][0][0]
theta = lines[i][0][1]
a = math.cos(theta)
b = math.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(cdst, pt1, pt2, (0, 0, 255), 2, cv2.LINE_AA)
(其中 hull_img 1 是我附上的第一张图片)。 但结果是:2
为什么线断了?为什么找不到所有行?难道我做错了什么?我应该更改代码吗?
如果有人可以帮助我,我将非常感激! 谢谢
【问题讨论】:
-
霍夫变换在图像中找到直线。您的图像没有直线。它们有点弯曲,所以你会得到很多线段。尝试在阈值处理后获取轮廓。然后使用 cv2.approxPolyDP() 将顶点数减少到 4 个。然后简单地从一个顶点画线到另一个顶点。
标签: python opencv hough-transform convex-hull canny-operator