2012-02-29 1 views
1

전 이미지 처리에서 초보자입니다. 누구든지 회색 이미지에서 얼룩 탐지를 수행하는 방법을 가르쳐 주시겠습니까? 샘플 코드는 정말 감사하겠습니다. 나는 그 때 나타나는 얼룩의 수를 세어야 할 것이다. 그런데 입력은 웹 카메라에서 나옵니다. 또한 BLOB의 크기를 결정하는 방법은 무엇입니까? 크기가 머리와 거의 같은 크기인지 비교하고 싶습니까? 사실 저는 문을 통과하는 사람들의 수를 세어 봐야 할 헤드 카운트를하고 있습니다. 내 댓글의 연결 예에서회색 이미지의 Emgu CV BLOB 감지

+0

샘플 코드? 이것은 매우 복잡한 주제이며, 내가 추측하는 코드 샘플을 얻지 못할 것이다. http://opencv.willowgarage.com/wiki/cvBlobsLib – vulkanino

+0

아마도 emgucv를 사용하여 BLOB 크기를 결정하는 데 도움을 줄 수 있습니다. – 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