如何显示 findContours 与 cvBlob 做同样的事情
Posted
技术标签:
【中文标题】如何显示 findContours 与 cvBlob 做同样的事情【英文标题】:How to show that findContours does the same thing as cvBlob does 【发布时间】:2012-10-04 17:51:49 【问题描述】:我有一个主管,他只想使用 cvBlob 来查找连接的组件。
我如何向他证明 findContours 也可以做到这一点?我已经向他展示了 c++ 和 matlab 代码来证明我的“理论”,但他还不相信。
OpenCV 开发人员是否有任何关于 findContours 确实可以找到 blob 的参考资料?
【问题讨论】:
既然您在概念上证明了它,那么文档说什么或不说什么并不重要。算法和应用很重要,因为您坚持使用同一组工具/库。 【参考方案1】:您可能可以通过以下方式解决它:
查找轮廓 (cv::findContours) 循环遍历轮廓 找到每个和最小封闭圆的中心点 (cv::minEnclosingCircle) 为每个边界/闭合轮廓绘制(填充)圆这是一个使用 findContours 检测 @hand-tracking application 的 blob 示例(请查看上面的第 82-107 行),作者为 @andrew-berg。
【讨论】:
同意,您可以轻松绘制使用cv::fillConvexPoly
填充的轮廓。所以你可以用两种方法来比较你的结果。我想不出你的教授为什么需要更多的东西。【参考方案2】:
询问你的主管究竟为什么他更喜欢使用 cvBlob。
有人报告说 cvBlob 比 findContours 快,但 findContours 的优势是标准解决方案,并且有大社区的支持(目前 cvBlob 的支持非常糟糕,抱歉),而且很多比 cvBlob 更通用的功能(更针对特定目标)。
当你的主管给出答案时(如果他可以的话),那么你可以回扣。
顺便说一句,我是 cvBlob 的开发者。
【讨论】:
我已经问过了。主要原因是他过去成功使用过它。我认为这是一个很好的理由,但我们的程序现在基于 OpenCV C++ API,所以我不想回到 C API。是的,我知道 CVBlob 通常更快,但在我们的例子中,图像很大并且 blob 的数量以上是关于如何显示 findContours 与 cvBlob 做同样的事情的主要内容,如果未能解决你的问题,请参考以下文章
如何正确增加使用 cv::findContours 找到的矩形的大小