2011-02-05 19 views
6

Quiero crear un histograma dentro de un programa C# que usa EMGU. EMGU contiene una clase llamada MCvHistogram, pero no sé cómo usarlo.Cómo crear un histograma

+0

En este artículo se muestra cómo crear histograma RGB en http://stackoverflow.com/questions/8204822/how-to-draw-histogram-using-emgucv-and-c-sharp – JiP

Respuesta

11

Debe usar la clase DenseHistogram si desea usar EmguCV. te voy a mostrar el uso básico:

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

Hay una gran cantidad de otros métodos comunes dentro de la clase DenseHistogram como Volver proyección

+0

dar gracias .. pero Ya calculo el histograma usando CvInvoke.cvCalHist(), pero encuentro que el método anterior es mucho más fácil de usar. ¿Puede explicar brevemente la diferencia entre McvHistogram y DenseHistogram? –

+2

DenseHistogram es la clase administrada que envuelve McvHistogram. Puede inspeccionar la clase DenseHistogram y verificar que tenga una propiedad MCvHistogram. Mi sugerencia es no utilizar cvinvoke cuando la funcionalidad de opencv ya se haya empaquetado en la clase administrada correcta ... –

3

Puede utilizar este fragmento de código:

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

Se creará un histograma de su imagen automáticamente.

+0

¿cómo se sabe qué valor pasar por bin? – gonzobrains

+0

Además, ¿por qué tiene dos cuadros de histograma? – gonzobrains

Cuestiones relacionadas