【问题标题】:Blobs with OpenCV. Which library is best? [closed]带有 OpenCV 的 Blob。哪个图书馆最好? [关闭]
【发布时间】:2013-11-12 16:17:06
【问题描述】:

我计划以 C++ 用户的身份开始试验 blob,并在 OpenCV 的 cv::Mat's 获得一些经验。

现在的问题是,我应该使用哪个 blobs 库?

到目前为止,我已经看到了这些替代方案:

  1. cvBlobs (on google code) -- 这确实是一个 c 库,与 IplImage 一起工作,因此需要认真适应 c++。
  2. CvBlobsLib (on willowgarage opencv webpage) -- 看起来像一个 c++ 库,但文档非常糟糕,有很多东西无法解释,几乎没有代码示例。
  3. 我在 OpenCV 2.4.3 库中看到了 cv::findContours、cv::moments 和 cv::drawContours。

作为专家,您有什么建议?我的紧迫问题:新的 OpenCV 不会涵盖谷歌代码上的 cvBlobs 吗?


这是有关此主题的后续问题的链接,我在其中询问SimpleBlobDetector。你可能会感兴趣。

【问题讨论】:

    标签: c++ opencv cvblobslib


    【解决方案1】:

    您应该在 OpenCV 2.4 中使用SimpleBlobDetector class。您几乎创建了一个 SimpleBlobDetector 类型的对象,然后调用 detect(cv::Mat input, vector<cv::KeyPoint> keypoints, cv::Mat mask) 函数,其中 cv::Mat 图像作为输入,关键点的空向量和另一个 cv::Mat 作为特定区域的可选掩码要在其中查找关键点的图像。

    请注意,在早期版本的 OpenCV 中,cv::Mat 对象已经接管了所有以前独立的图像和矩阵类的图像和矩阵存储任务。

    【讨论】:

    • 好的,这个答案看起来令人兴奋!我只是不确定我能不能让它工作。我有以下顾虑:这个只返回 blob 的中心,我不能有一个完整的标记 Mat,可以吗?另外,如何访问检测到的斑点的特征,如面积、凸度、颜色等?我应该把它作为一个单独的问题提出来,你答应我看看吗? :)
    • 它现在看起来对我来说更像是一个概念不太成熟的教程类,它也不是很可扩展。 :( 也许我会在 CBlob 上实现我的包装器,然后我把它放在开源的某个地方。
    • linkKeypoint 类(即检测函数的输出)除了检测到的每个斑点的中心外,还包含作为直径的大小。此外,在SimpleBlobDetector 的构造函数中,您可以指定所需的颜色、圆度、面积、凸度和惯性。您只需将它们放入构造函数中:SimpleBlobDetector myBlobDetector(bool filterByArea=true, float minArea=10, float maxArea = 100);
    • 等等,伙计,我想是时候提出一个新问题了,我会把它链接在这里,这样你就可以找到它:)
    • 我还是把构造函数搞砸了。它应该类似于:cv::SimpleBlobDetector::Params params; params.minDistBetweenBlobs = 10.0; params.filterByArea = true; params.minArea = 20.0; params.maxArea = 500.0; SimpleBlobDetector myBlobDetector(params);
    【解决方案2】:

    您应该看看新的opencvblobslib。它具有强大的功能,例如多核支持。

    【讨论】:

    • thx,+1(以及 SO 要求的更多字符 :))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2015-02-28
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多