Как создать гистограмму

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


person White Dwarf    schedule 05.02.2011    source источник
comment
В этой статье показано, как создать гистограмму в RGB stackoverflow.com/questions/8204822/   -  person JiP    schedule 14.01.2014


Ответы (2)


Вы должны использовать класс 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 есть много других распространенных методов, таких как Back Projection.

person Luca Del Tongo    schedule 05.02.2011
comment
спасибо .. но я уже рассчитываю гистограмму, используя CvInvoke.cvCalHist(), но я считаю, что описанный выше метод намного проще в использовании. Можете ли вы кратко описать разницу между McvHistogram и DenseHistogram? - person White Dwarf; 07.02.2011
comment
DenseHistogram — это управляемый класс, обертывающий McvHistogram. Вы можете проверить класс DenseHistogram и убедиться, что у него есть свойство MCvHistogram. Я предлагаю не использовать cvinvoke, когда функциональность opencv уже заключена в надлежащий управляемый класс... - person Luca Del Tongo; 07.02.2011

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

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

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

person HazzA    schedule 27.04.2011
comment
откуда вы знаете, какое значение передать для bin? - person gonzobrains; 31.08.2013
comment
Кроме того, почему у вас два поля гистограммы? - person gonzobrains; 31.08.2013