如何使用 OpenCV 的 adaptiveThreshold 获取大于 255 的值(即类型 CV_8UC1)?

How to use adaptiveThreshold from OpenCV for values larger than 255 (i.e. type CV_8UC1)?

我想使用 OpenCV 中的 adaptiveThreshold 函数来为 vector<double>.[=29= 中的值确定适当的局部阈值]

adaptiveThresholddocs中指定如下:

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> 中的值变得非常大并被归一化到 0 的范围内,它会带来很大的精度损失255

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

恐怕没有适用于更广泛值的选项。但是由于 OpenCV 是开源的,因此很容易导出一个采用 'double' 值的版本。找到adaptiveThreshold()的源码改成自己用就行了