【问题标题】:Emgu CV blob detection in gray image灰度图像中的 Emgu CV 斑点检测
【发布时间】:2012-03-27 03:29:54
【问题描述】:

我是图像处理的新手。谁能教我如何在灰度图像中进行斑点检测?一个示例代码将不胜感激。然后我必须计算存在的 blob 数量。顺便说一下,输入将来自网络摄像头。以及如何确定blob的大小?喜欢比较大小是否与头部大小几乎相同?实际上,我正在做一个头数计数器,我必须计算通过门的人数。

【问题讨论】:

  • 示例代码?这是一个非常复杂的话题,我猜你不会得到代码示例。看到这个:opencv.willowgarage.com/wiki/cvBlobsLib
  • 也许你可以帮助我使用 emgucv 确定 blob 大小

标签: emgucv


【解决方案1】:

在我评论的链接示例中:

http://opencv.willowgarage.com/wiki/cvBlobsLib

你很容易得到一个CBlob对象:

CBlobResult blobs;
int i;
CBlob *currentBlob;
IplImage *original, *originalThr;

// load an image and threshold it
original = cvLoadImage("pic1.png", 0);
cvThreshold( original, originalThr, 100, 0, 255, CV_THRESH_BINARY );

// find non-white blobs in thresholded image
blobs = CBlobResult( originalThr, NULL, 255 );
// exclude the ones smaller than param2 value
blobs.Filter( blobs, B_EXCLUDE, CBlobGetArea(), B_LESS, param2 );

// get mean gray color of biggest blob
CBlob biggestBlob;
CBlobGetMean getMeanColor( original );
double meanGray;

blobs.GetNth( CBlobGetArea(), 0, biggestBlob );
meanGray = getMeanColor( biggestBlob );

// display filtered blobs
cvMerge( originalThr, originalThr, originalThr, NULL, displayedImage );

for (i = 0; i < blobs.GetNumBlobs(); i++ )
{
        currentBlob = blobs.GetBlob(i);
        currentBlob->FillBlob( displayedImage, CV_RGB(255,0,0));
}

然后您可以根据需要致电AreaPerimeter

【讨论】:

  • 我正在使用 EmguCV。我可以在 EmguCV 中调用 cvbloblib 吗??
猜你喜欢
  • 2011-09-04
  • 2012-11-18
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
相关资源
最近更新 更多