【发布时间】:2024-01-30 23:45:01
【问题描述】:
我正在使用开放式 CV 和 C++。我有一个完全黑暗的图像,上面有 3 个彩色点。我需要他们的中心坐标。如果我在暗图像中只有一个彩色点,它将自动显示其中心坐标。但是,如果我将带有 3 个彩色点的暗图像作为输入,我的程序将对这 3 个坐标进行平均,并将 3 个彩色点的中心一起返回,这正是我的问题。我需要他们各自的中心坐标。
任何人都可以建议一种方法来做到这一点。谢谢
【问题讨论】:
-
也许如果您分享代码或至少与算法相关的重要部分,我们将能够提供帮助。
-
是的,我将代码粘贴到粘贴箱并编辑了上面的内容。
-
我看到至少三种简单的方法可以做到这一点(但可能有更简单的方法): 1. 使用
cv::findContours方法并计算每个找到的轮廓的重心(如果每个轮廓在图像就是这样一个点) 2. 使用cv::HoughCircles方法找到每个圆(如果图像中可以有其他点) 3. 使用聚类方法(例如k-means)并计算每个圆的重心集群(如果点/集群的数量已知)(4.)使用某种斑点检测 - 类似于圆形检测,但也可能适用于较小的圆圈。 -
正如@Micka 所建议的,我已经使用QuickBlob 和it works nicely 测试了blob 检测方法(方法4)。有关详细信息,请参阅this answer。
-
非常感谢所有好主意!@deltheil:你的代码是用 C++ 编写的吗?我一直在尝试使用 blob 检测来检测这些点,但不幸的是我没有得到正确的参数。可以发一下代码吗?
标签: c++ opencv computer-vision coordinates