cv2: HoughLinesPointSet在一个简单的例子中失败了

2022-01-30 14:51:03 标签 python-3.xcv2point-cloudshough-transform

我正在研究点云中的线。为此,我希望利用cv2函数HoughLinesPointSet。

我获得了文档中示例的准确结果,但我得到了一个相当简单的研究案例的糟糕结果,所以我认为我在这里遗漏了一些东西。

我很乐意听到任何澄清和/或建议。

import matplotlib.pyplot as plt
import numpy as np
import cv2 as cv2
# Study case
x = np.linspace(0, 10, 10)
y1 = np.zeros(10)
y2 = np.ones(10)
plt.scatter(x, y1)
plt.scatter(x, y2)
# Hough transform
pnts1 = np.column_stack((x, y1))
pnts2 = np.column_stack((x, y2))
pnts = np.row_stack((pnts2, pnts1))
pc = pnts.reshape(-1, 1, 2).astype(np.float32)
pc_lines = cv2.HoughLinesPointSet(pc, lines_max=20, threshold=5, min_rho=0, max_rho=20, 
                                  rho_step=1,min_theta=0, max_theta=np.pi, 
                                  theta_step=np.pi/100)
votes, rho, theta = pc_lines[:, 0][:, 0], pc_lines[:, 0][:, 1], pc_lines[:, 0][:, 2]
# Convert to cartesian
theta[theta == 0.] = 1e-5  # to avoid division by 0 in next line
a = -1 / np.tan(theta)  # the implied lines are perpendicular to theta
x = rho * np.cos(theta)
y = rho * np.sin(theta)
b = y - a * x
# Plot
xx = np.linspace(0, 10)
for (ia, ib) in zip(a, b):
    yy = xx * ia + ib
    plt.plot(xx, yy)
plt.show()
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码