2011-02-05 20 views
6

EMGU kullanan bir C# programı içinde histogram oluşturmak istiyorum. EMGU içinde MCvHistogram adlı bir sınıf var, ama nasıl kullanacağımı bilmiyorum.Histogram nasıl oluşturulur?

+0

Bu makale RGB histogram nasıl oluşturulacağını gösterir http://stackoverflow.com/questions/8204822/how-to-draw-histogram-using-emgucv-and-c-sharp – JiP

cevap

11

EmguCV'yi kullanmak istiyorsanız, DenseHistogram sınıfını kullanmalısınız. Sana temel kullanımını göstereceğiz:

vardır
// Create a grayscale image 
    Image<Gray, Byte> img = new Image<Gray, byte>(400, 400); 
    // Fill image with random values 
    img.SetRandUniform(new MCvScalar(), new MCvScalar(255)); 
    // Create and initialize histogram 
    DenseHistogram hist = new DenseHistogram(256, new RangeF(0.0f, 255.0f)); 
    // Histogram Computing 
    hist.Calculate<Byte>(new Image<Gray, byte>[] { img }, true, null); 

böyle Arka Projeksiyon olarak DenseHistogram sınıfının içindeki diğer ortak yöntemler bir çok

+0

teşekkürler .. ama Ben zaten CvInvoke.cvCalHist(), kullanarak histogramı hesaplamak ama yukarıdaki yöntemi kullanmak çok daha kolay. McvHistogram ve DenseHistogram arasındaki farkı kısaca anlatabilir misiniz? –

+2

DenseHistogram, McvHistogram'ı saran yönetilen sınıftır. DenseHistogram sınıfını inceleyebilir ve bir MCvHistogram özelliği olup olmadığını kontrol edebilirsiniz. Benim önerim, opencv işlevselliği düzgün yönetilen sınıfta zaten sarılmış olduğunda cvinvoke kullanmamaktır ... –

3

Bu kod parçacığını kullanabilirsiniz:

histogramBox.GenerateHistograms(image,bin);    
histogramBox2.Refresh(); 

It resminizin histogramını otomatik olarak oluşturur.

+0

Bin için hangi değerin geçtiğini nasıl biliyorsunuz? – gonzobrains

+0

Ayrıca, neden iki histogram kutunuz var? – gonzobrains