我想使用OpenCV中的adaptiveThreshold
函数来为vector<double>
中的值确定适当的本地阈值。
adaptiveThreshold
在文档中规定如下:
void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)
请注意,src
必须是源8位单通道图像(因此,如果我理解正确,输入类型需要为CV_8UC1
,如果我在这里错了,请纠正我…)
由于我的vector<double>
不是CV_8UC1
类型,因此实现这一点的一种方法是对0
和255
范围内的值进行归一化,然后将得到的归一化值作为vector<unsigned char>
馈送到adaptiveThreshold
函数中。
乍一看,这可能很好,但它会带来很大的精度损失,因为我的原始vector<double>
中的值变得非常大,并被归一化到0
到255
的范围。
因此,我想知道是否没有一个选项可以对更大范围的值使用adaptiveThreshold
函数。对我来说,这似乎太不合乎逻辑了,它应该只适用于最大值为255
的值。。。感觉我监督了一些非常简单的事情,但我不知道如何解决这个问题。。。
对于更大范围的值,恐怕没有这样的选项。但是,由于OpenCV是开源的,因此很容易派生出一个采用"double"值的版本。只需找到adaptiveThreshold()的源代码并将其更改为自己使用即可。