2011-02-05 5 views
6

Voglio creare un istogramma all'interno di un programma C# che usi EMGU. EMGU contiene una classe chiamata MCvHistogram, ma non so come usarla.Come creare un istogramma

+0

In questo articolo viene illustrato come creare istogramma RGB in http://stackoverflow.com/questions/8204822/how-to-draw-histogram-using-emgucv-and-c-sharp – JiP

risposta

11

È necessario utilizzare la classe DenseHistogram se si desidera utilizzare EmguCV. vi mostrerò uso di base:

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

Ci sono un sacco di altri metodi comuni all'interno della classe DenseHistogram quali proiezione di fondo

+0

thanx .. ma Ho già calcolato l'istogramma usando CvInvoke.cvCalHist(), ma trovo che il metodo sopra è molto più facile da usare. Puoi elaborare in breve la differenza tra McvHistogram e DenseHistogram? –

+2

DenseHistogram è la classe gestita che avvolge McvHistogram. È possibile ispezionare la classe DenseHistogram e verificare che abbia una proprietà MCvHistogram. Il mio suggerimento è di non usare cvinvoke quando la funzionalità opencv è già stata inserita nella corretta classe gestita ... –

3

È possibile utilizzare questo frammento di codice:

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

E ' creerà automaticamente un istogramma della tua foto.

+0

come fai a sapere quale valore passare per bin? – gonzobrains

+0

Inoltre, perché hai due caselle istogramma? – gonzobrains