2011-02-05 3 views
6

Я хочу создать гистограмму в программе C#, использующей EMGU. EMGU содержит класс под названием MCvHistogram, но я не знаю, как его использовать.Как создать гистограмму

+0

В этой статье показано, как создать гистограмму в RGB http://stackoverflow.com/questions/8204822/how-to-draw-histogram-using-emgucv-and-c-sharp – JiP

ответ

11

Вы должны использовать класс DenseHistogram, если хотите использовать EmguCV. я покажу вам основные способы использования:

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

Есть много других общих методов внутри класса DenseHistogram, такие как Проекционные

+0

спасибо .. но Я уже вычисляю гистограмму с помощью CvInvoke.cvCalHist(), , но я нахожу выше метод намного проще в использовании. Можете ли вы кратко объяснить разницу между McvHistogram и DenseHistogram? –

+2

DenseHistogram - это управляемый класс, который обертывает McvHistogram. Вы можете проверить класс DenseHistogram и проверить, что у него есть свойство MCvHistogram. Мое предложение состоит в том, чтобы не использовать cvinvoke, когда функциональность opencv уже была завернута в соответствующий управляемый класс ... –

3

Вы можете использовать этот код:

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

It автоматически создаст гистограмму вашего изображения.

+0

как вы знаете, какое значение передать для bin? – gonzobrains

+0

Кроме того, почему у вас есть два гистограммы? – gonzobrains

Смежные вопросы