2011-02-05 15 views
6

Chcę utworzyć histogram w programie C#, który używa EMGU. EMGU zawiera w sobie klasę o nazwie MCvHistogram, ale nie wiem, jak jej używać.Tworzenie histogramu

+0

Ten artykuł pokazuje, jak utworzyć histogram RGB http://stackoverflow.com/questions/8204822/how-to-draw-histogram-using-emgucv-and-c-sharp – JiP

Odpowiedz

11

Powinieneś użyć klasy DenseHistogram, jeśli chcesz używać EmguCV. pokażę ci podstawowe Zastosowanie:

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

Istnieje wiele innych popularnych metod wewnątrz klasy DenseHistogram takich jak Back Projection

+0

thanx .. ale już obliczyć histogram przy użyciu CvInvoke.cvCalHist(), , ale znajduję powyżej metody jest znacznie łatwiejsze w użyciu. Czy możesz krótko opracować różnicę między McvHistogram i DenseHistogram? –

+2

DenseHistogram to zarządzana klasa, która otacza McvHistogram. Możesz sprawdzić klasę DenseHistogram i sprawdzić, czy ma ona MCvHistogram właściwości. Moja sugestia jest taka, aby nie używać cvinvoke, gdy funkcja opencv została już zapakowana w odpowiednią zarządzaną klasę ... –

3

Można użyć tego fragmentu kodu:

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

It automatycznie utworzy histogram twojego zdjęcia.

+0

Skąd wiadomo, jaką wartość przekazać dla bin? – gonzobrains

+0

Ponadto, dlaczego masz dwa pola histogramu? – gonzobrains

Powiązane problemy