是否有适用于cv :: Mat的CvBlobs库的任何版本?

X''*_*X'' 4 c++ opencv

我刚刚发现CvBlobsLib可以成为一个祝福但它遗憾地使用了IplImage.
有没有机会有一个新的cv :: Mat风格的版本我只是没有碰巧找到它?

编辑:

事实证明,我碰巧发现了2个不同的库,CvBlobsLib和CvBlobs,yeehaa.:)
我看到CvBlobsLib比cvBlobs使用得少,这不是在opencv willowgarage上,而是在谷歌代码上.我欢迎这两个库的答案,因为它们都适用于IplImage.:)

dom*_*dom 5

编辑:我在这个答案中谈论cvBlobs,抱歉我把它搞砸了cvBlobsLib ......

我一直在寻找这个,但没有想出任何使用新图像结构的库.

但实际上你总能做到这一点:IplImage iplImg = mat;只需&iplimg在你需要的地方使用IplImage*.

我在一些项目中以这种方式成功使用了cvBlobs:

#include <cvblob.h>
using namespace cvb;

// load image
cv::Mat mat = cv::imread("image.jpg");

// convert cv::Mat to IplImage
IplImage img = mat;

// convert to grayscale
IplImage *gray = cvCreateImage( cvGetSize(&img), IPL_DEPTH_8U, 1 );
cvCvtColor( &img, gray, CV_BGR2GRAY );

// get binary image
cvThreshold( gray, gray, 150, 255, CV_THRESH_BINARY );

// get blobs
IplImage *labelImg = cvCreateImage( cvGetSize(gray), IPL_DEPTH_LABEL, 1 );
CvBlobs blobs;
unsigned int result = cvLabel( gray, labelImg, blobs );

// render blobs in original image
cvRenderBlobs( labelImg, blobs, &img, &img );

// *always* remember freeing unused IplImages
cvReleaseImage( labelImg );
cvReleaseImage( gray ); 

// convert back to cv::Mat
cv::Mat output( &img );
Run Code Online (Sandbox Code Playgroud)