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

时间:2015-04-17 10:40:33

标签: c++ opencv image-processing vector adaptive-threshold

我想使用 OpenCV 中的adaptiveThreshold函数来确定vector<double>中值的适当本地阈值。

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到{{的范围内,它会大大降低精度。 1}}。

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

1 个答案:

答案 0 :(得分:1)

我担心对于更广泛的价值观没有这样的选择。但是,推出一个需要“双倍”的版本相当容易。值为OpenCV是开源的。只需找到adaptiveThreshold()的源代码并将其更改为您自己使用。