2012-02-29 25 views
1

私は画像処理の初心者です。灰色の画像でブロブ検出を行う方法を教えてもらえますか?サンプルコードは本当に感謝しています。私は存在するブロブの数を数えなければなりません。ところで、入力はウェブカメラからのものになります。また、ブロブのサイズを決定する方法も?サイズが頭とほぼ同じサイズかどうか比較したいのですか?実際に私はドアを通過する人の数を数える必要があるヘッドカウンターをやっています。私のコメントのリンクの例では灰色画像のEmgu CVブロブ検出

+0

サンプルコード?これは非常に複雑なトピックです。私が推測するコードサンプルは入手できません。これを参照してください:http://opencv.willowgarage.com/wiki/cvBlobsLib – vulkanino

+0

多分あなたはemgucvを使ってブロブの大きさを判断するのを手伝ってくれるかもしれません – user1217904

答えて

0

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)); 
} 

あなたは何が必要に応じて、それにAreaまたはPerimeterを呼び出すことができます。

+2

私はEmguCVで作業しています。 EmguCVでcvbloblibを呼び出すことができますか? – user1217904

関連する問題