OpenCV

2012-07-24 19 views
9
ile

Bir nesnenin alanını hesapla Ben bir gri tonlamalı resimdeki blob/bir nesnenin alanını (IplImage olarak değil Mat olarak yükleyerek) OpenCV kullanarak hesaplamam gerekiyor. Kenarların koordinatlarını (kenarların sayısı nesne nesnesini nesneye dönüştürür) veya konturun tüm koordinatlarını almanın ve sonra da nesnemin alanını hesaplamak için contourArea()'u kullanmanın iyi bir fikir olacağını düşündüm.OpenCV

Tüm sesi sildim ve findContours() (C++ programlama ile) güzel ve tatmin edici konturlar elde ettim.

findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy,int mode, int method, Point offset=Point()); 

Şimdi contours zaten benim nesnenin tüm hatlarına koordinatlarını sahip olduğu param anlamalısın. Bunu doğru mu yaptım?

Evet ise, onlara erişmenin bir yolu var mı?

Ve eğer hayırsa, konturun koordinatlarını nasıl alabilirim?

cevap

23

contours aslında

vector<vector<Point> > contours; 

olarak tanımlanan Ve şimdi onun erişim noktalarına nasıl açık olduğunu düşünüyorum edilir.

kontur alanı güzel contourArea() adında bir işlev tarafından hesaplanır:

for (unsigned int i = 0; i < contours.size(); i++) 
{ 
    std::cout << "# of contour points: " << contours[i].size() << std::endl; 

    for (unsigned int j=0; j<contours[i].size(); j++) 
    { 
     std::cout << "Point(x,y)=" << contours[i][j] << std::endl; 
    } 

    std::cout << " Area: " << contourArea(contours[i]) << std::endl; 
} 
+1

Çok teşekkürler! Ne yaptığınızı anlamak için kısa bir süre aldı, ama şu andan itibaren söyleyebileceğim kadarıyla :) Çalıştığım günlerde herhangi bir çözüm göremediğiniz günlerde bu problem üzerine oturmuş ... – Temer

+0

Okuma belgeleri size çok şey kazandıracaktı. zamanı :). OpenCV ile gelen örnek kod kodu da harika. – Sam