如何在opencv python中将8个点分成两部分
Posted
技术标签:
【中文标题】如何在opencv python中将8个点分成两部分【英文标题】:How to seperate 8 points into two parts in opencv python 【发布时间】:2019-06-02 11:50:21 【问题描述】:我正在尝试进行相机校准,但在将点分成两个集群时遇到了问题。
示例图片: 例如,如图所示,有八个大小相似的矩形。 A、B、C、D、E、F、G、H 是它们的中心。我想将 A、B、C、D 聚集到一个列表中,将 E、F、G、H 聚集到另一个列表中。
我的粗鲁想法是找到 4 个点的所有组合,然后进行线拟合。最适合的两条线(偏差最小)应该是线 ABCD 和线 EFGH。因此,我可以将它们分开。
但是,我想知道是否有更好的方法来做到这一点?或者有没有我可以在 python/opencv 中使用的库?
非常感谢。
【问题讨论】:
【参考方案1】:计算机视觉中的经典方法(CV 中的每个人应该都知道)是使用 霍夫变换。然后在这个投影中找到密度峰值。
霍夫变换空间中的峰值对应于原始空间中包含多个点的线。
有一种基于这种思想的聚类算法:CASH。但恕我直言,如果您的输入数据超过二维,使用它最有趣。
【讨论】:
谢谢匿名。但根据我的测试,霍夫变换仍然失败。我试过lines = cv2.HoughLines(img,1,np.pi/180,200)
。但是它只给出一行而不是两行。 img
仅包含 10 个中心点。我通过以下方法完成了这个问题: 1. 找到两点的所有组合。 2.用两点得到一条线。然后看这条线上是否有五个点。 3.当我找到两条这样的行时,返回。以上是关于如何在opencv python中将8个点分成两部分的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Assembly x86 中将这些位分成 8 位块?
如何在 Python 中将读取一个大的 csv 文件分成大小均匀的块?