python - 如何在opencv python中将8个点分成两部分
问题描述
我正在尝试进行相机校准,但在将点分成两个集群时遇到了问题。
示例图像: 例如,如图所示,有八个大小相似的矩形。A、B、C、D、E、F、G、H 是它们的中心。我想将 A、B、C、D 聚集到一个列表中,将 E、F、G、H 聚集到另一个列表中。
我的粗鲁想法是找到 4 个点的所有组合,然后进行线拟合。最适合的两条线(偏差最小)应该是线 ABCD 和线 EFGH。因此,我可以将它们分开。
但是,我想知道是否有更好的方法来做到这一点?或者有没有我可以在 python/opencv 中使用的库?
提前非常感谢。
解决方案
计算机视觉中的经典方法(CV 中的每个人都应该知道)是使用Hough 变换。然后在这个投影中找到密度峰值。
Hough 变换空间中的峰对应于原始空间中包含多个点的线。
有一种基于这种思想的聚类算法:CASH。但是恕我直言,如果您的输入数据超过二维,则使用它最有趣。
推荐阅读
- javascript - React-Leaflet 将热图图层添加到地图
- google-cloud-platform - 在谷歌云上设置谷歌语音到文本 - 错误:产生 SoX ENOENT
- r - data.frame/tibble/data.table 中的自定义 S4 类
- python - 如何正确地将随机梯度下降应用于简单的神经网络?
- javascript - 获取一段被点击的折线
- python - tensorflow 归一化和轴参数
- php - PHP CURL 文件上传被保存到 Sharepoint 而不是 OneDrive
- c - 将 main 的 *argv[] 传递给另一个函数正在调用的函数?
- mysql - 如何从 SQL 中的特定字符中拆分字符串?
- swiftui - SwiftUI List 查看不同索引的不同单元格