如何将OpenCV中的adaptiveThreshold用于大于255的值(即CV_8UC1类型)



我想使用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类型,因此实现这一点的一种方法是对0255范围内的值进行归一化,然后将得到的归一化值作为vector<unsigned char>馈送到adaptiveThreshold函数中。

乍一看,这可能很好,但它会带来很大的精度损失,因为我的原始vector<double>中的值变得非常大,并被归一化到0255的范围。

因此,我想知道是否没有一个选项可以对更大范围的值使用adaptiveThreshold函数。对我来说,这似乎太不合乎逻辑了,它应该只适用于最大值为255的值。。。感觉我监督了一些非常简单的事情,但我不知道如何解决这个问题。。。

对于更大范围的值,恐怕没有这样的选项。但是,由于OpenCV是开源的,因此很容易派生出一个采用"double"值的版本。只需找到adaptiveThreshold()的源代码并将其更改为自己使用即可。

相关内容

  • 没有找到相关文章