gpt4 book ai didi

c# - emgu 用矩阵计算直方图

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:33 28 4
gpt4 key购买 nike

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

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()

我不知道哪里出了问题:(

最佳答案

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

此类仅在 float 而不是 double 上计算。

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<double>而不是静态 RangeF类。

关于c# - emgu 用矩阵计算直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193642/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com