OpenCV-查找二进制图像中最大斑点的边界框

问题描述 投票:15回答:6

使用OpenCV在二进制图像中找到最大斑点的边界框的最有效方法是什么?不幸的是,OpenCV没有用于斑点检测的特定功能。我应该只使用findContours()并在列表中搜索最大的吗?

opencv image-processing feature-detection
6个回答
3
投票

如果要使用OpenCV库,请签出OpenCV SimpleBlobDetector。这是另一个堆栈溢出,显示了其中的一个小教程:How to use OpenCV SimpleBlobDetector

尽管这仅给您关键点。您可以将其用作初始搜索以找到所需的Blob,然后可以在最可能的Blob周围使用findContours算法。

此外,您还可以了解更多有关Blob的信息,您可以提供参数以过滤掉不需要的Blob。您可能需要测试SimpleBlobDetector的area参数。如果该算法未检测到任何斑点,则可能可以根据图像区域的大小计算面积,然后迭代地允许较小的斑点。]

这里是指向OpenCV主要文档的链接:http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html#simpleblobdetector


6
投票

这里。它。是的。(仅供参考:请不要懒惰,并找出下面我的函数中发生的事情。


2
投票

为了找到最大斑点的边界框,我使用了findContours,后接以下代码:


0
投票

可能最有效的方法是使用CvBlobsLib。您可以在以下位置下载http://sourceforge.net/projects/cvblobslib/?source=dlp


0
投票

TimZaman,您的代码有错误,但我无法评论,因此我提出了一个新的正确答案。这是我基于1“和TimZaman的想法的解决方案:


0
投票

由于没有人发布完整的OpenCV解决方案,因此这是一种使用阈值+轮廓区域过滤的简单方法

© www.soinside.com 2019 - 2024. All rights reserved.