gpt4 book ai didi

C++ 修复 OpenCV squares.cpp 示例以合并封闭的正方形

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:00 25 4
gpt4 key购买 nike

我一直在使用 OpenCV squares.cpp 示例来查找图像中正方形的角坐标。

样本有时会对每个对象进行多次数学运算。现在我想“合并”,为每个似乎属于同一对象的正方形计算平均角坐标。

findSquares 函数的结果结构是一个像这样的 3 维 vector 类型结构:

[
[[10,10],[100,10],[100,100],[10,100]], // First square
[[100,100],[300,100],[300,100],[100,300]], // Second square
[[8,11],[110,5],[106,109],[10,97]], // Should be meged with the first square
[[112,99],[296,103],[312,98],[92,300]] // Should be merged with the second square
]

(我是 C++ 的初学者,所以我用 JavaScript 数组表示法编写 vector 结构,只是为了可视化结构)

我的想法是:

  • 找到所有相互匹配的方 block (在最大距离阈值内有 4 个点,其他方 block 有 4 个点)
  • 将它们分组并计算正方形的平均 4 个点
  • 将新的平均平方保存到结果 vector

有什么好的算法吗? OpenCV 有内置的吗?对此有更好的方法吗?

最佳答案

替代方案:

Order by `x` coordinate of first point (the point closes to the origin or something)
For each square:
Search forwards for a matching point until the `x` coordinate is bigger than the threshold.

这应该是关于 O(nlogn+n) = O(nlogn),但如果你有很多方 block 关闭,则可能是 O(n^2)对彼此。

关于C++ 修复 OpenCV squares.cpp 示例以合并封闭的正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7453574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com