【问题标题】:emgu Calculate histogram with matricesemgu 用矩阵计算直方图
【发布时间】:2012-08-30 09:19:22
【问题描述】:

我发现了一个类似的问题:creating histogram using emgu cv c#
当我传递灰度图像时效果很好,但是当我使用矩阵时,程序会抛出异常。我的代码:

Matrix<double> mat = new Matrix<double>(10, 10);
mat.SetRandUniform(new MCvScalar(0.0), new MCvScalar(20.0));
DenseHistogram histo = new DenseHistogram(5, new RangeF(0.0f, 20.0f));
histo.Calculate(new Matrix<double>[] { mat }, false, null);//<--throws exception here
CvInvoke.cvShowImage("Mat Histogram", histo.GetHistogramImage().Ptr);
CvInvoke.cvWaitKey(0);

emgu 文档中的声明是:

public void Calculate<TDepth>(
    Matrix<TDepth>[] matrices,
    bool accumulate,
    Matrix<byte> mask
)
where TDepth : new()

我不知道出了什么问题:(

【问题讨论】:

    标签: c# .net emgucv


    【解决方案1】:

    您面临的问题在于 DenseHistogram 类中的一个限制,当调用 cvCalcArrHist 时会抛出一个“不支持的格式或格式组合”。

    这个类只计算浮点数而不是双精度数。

    Matrix<float> mat = new Matrix<float>(10, 10);
    mat.SetRandUniform(new MCvScalar(0.0), new MCvScalar(20.0));
    DenseHistogram histo = new DenseHistogram(5, new RangeF (0.0f, 20.0f));
    histo.Calculate(new Matrix<float>[] { mat }, false, null); //runs fine :)
    

    更好的设计还应该让用户使用泛型指定范围,Range&lt;double&gt; 而不是静态的RangeF 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2011-11-04
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多