2012-11-23 111 views
6

我打算开始尝试blob作为C++用户,在OpenCV的cv :: Mat's上有一些经验。Blob与OpenCV。哪个库最好?

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

我迄今所看到的这些替代方案:

  1. ​​- 这是一个C语言库真的,有IplImage的工作,所以它需要认真适应于C++。
  2. CvBlobsLib (on willowgarage opencv webpage) - 看起来像一个C++库,但有相当不错的文档用大量的东西留下莫名其妙的和几乎没有任何的代码示例。
  3. 我在OpenCV 2.4.3库中看到了cv :: findContours,cv :: moments和cv :: drawContours。

你有什么建议作为专家?我的紧迫问题:新的OpenCV不会涵盖cvBlobs在google代码上的内容?


这里是链接,在这个问题上的后续问题,在这里我问SimpleBlobDetector。你可能会感兴趣。

回答

5

你应该在OpenCV中2.4使用SimpleBlobDetector class。你几乎创造SimpleBlobDetector类型的对象,然后调用detect(cv::Mat input, vector<cv::KeyPoint> keypoints, cv::Mat mask)功能用CV ::垫的图像作为输入,对于关键点的空载体,而另一个品种::垫作为一个可选的掩码图像的特定区域看对。

另外,CV ::垫目标已经接管了图像和矩阵存储税对所有以前独立的图像和矩阵类中的OpenCV的早期版本中的关键点。

+0

好的,这个答案看起来令人兴奋!我只是不确定我能否成功。我有以下担忧:这一个只会返回blob的中心,我不能拥有一个完整的,标记为Mat的,我能吗?另外,如何访问检测到的斑点的特征,如区域,凸度,颜色等?我应该把它作为一个单独的问题来提出,并且你答应我看看? :) –

+0

它现在看起来很像一个教程类,对于我来说并不是那么成熟的概念,它也不是很容易扩展。 :(也许我会在CBlob上实现我的封装,并且我把它放在某个开源处。 –

+0

[link](http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html#keypoint)'Keypoint' class(即检测函数的输出)除了检测到每个斑点的中心外,还包含直径的大小,另外,在SimpleBlobDetector的构造函数中,可以指定所需的颜色,圆度,面积,凸度和惯性,你只需把它们放到构造函数中就可以了:'SimpleBlobDetector myBlobDetector(bool filterByArea = true,float minArea = 10,float maxArea = 100);' – thealmightygrant

2

你应该看看新opencvblobslib。它具有多核心支持等强大功能。

+0

thx,+1(还有一些更多的字符需要通过:) :)) –