【问题标题】:How to create a histogram如何创建直方图
【发布时间】:2011-06-21 19:27:42
【问题描述】:

我想在使用 EMGU 的 C# 程序中创建直方图。 EMGU里面有一个叫MCvHistogram的类,但是我不知道怎么用。

【问题讨论】:

标签: c# image histogram emgucv


【解决方案1】:

如果你想使用 EmguCV,你应该使用 DenseHistogram 类。 我将向您展示基本用法:

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

【讨论】:

  • thanx.. 但我已经使用 CvInvoke.cvCalHist() 计算了直方图,但我发现上述方法更易于使用。您能否简要说明 McvHistogram 和 DenseHistogram 之间的区别?
  • DenseHistogram 是包装 McvHistogram 的托管类。您可以检查 DenseHistogram 类并检查它是否具有属性 MCvHistogram。我的建议是当 opencv 功能已经包装在适当的托管类中时不要使用 cvinvoke...
【解决方案2】:

你可以使用这个代码sn-p:

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

它会自动为您的图片创建直方图。

【讨论】:

  • 你怎么知道为 bin 传递什么值?
  • 另外,为什么你有两个直方图框?
猜你喜欢
  • 2017-07-27
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2020-01-12
  • 1970-01-01
相关资源
最近更新 更多