C++ 对于大于255的值(即键入CV_8UC1),如何使用OpenCV中的adaptiveThreshold?
我想使用OpenCV中的C++ 对于大于255的值(即键入CV_8UC1),如何使用OpenCV中的adaptiveThreshold?,c++,opencv,image-processing,vector,adaptive-threshold,C++,Opencv,Image Processing,Vector,Adaptive Threshold,我想使用OpenCV中的adaptiveThreshold函数,以便为向量中的值确定适当的本地阈值 自适应阈值在中指定如下: void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C) 请注意,src必须是源8位单通道图像(因此输入类型必须为CV_8UC1如果我理解正确,请纠正我这里
adaptiveThreshold
函数,以便为向量中的值确定适当的本地阈值
自适应阈值
在中指定如下:
void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)
请注意,src
必须是源8位单通道图像(因此输入类型必须为CV_8UC1
如果我理解正确,请纠正我这里的错误…)
由于我的向量
不是CV_8UC1
类型,一种方法是将0
和255
范围内的值标准化,然后将得到的标准化值作为向量
输入自适应阈值
函数
乍一看,这可能看起来不错,但随着原始向量中的值变得非常大,并被标准化到0
到255
的范围,它的精度会大大降低
因此,我想知道是否没有一个选项可以将adaptiveThreshold
函数用于更大范围的值。对我来说,这似乎太不合逻辑了,它应该只处理最大值为255的值。。。感觉上我监督了一件非常简单的事情,但我不知道如何解决这个问题……恐怕没有一个更广泛的价值观选择。但是,由于OpenCV是开源的,所以派生一个采用“双”值的版本是相当容易的。只需找到adaptiveThreshold()的源代码,并将其更改为您自己使用。不要故作迂腐,但您是否量化了标准化值时会损失多少精度,以及它是否会影响您的应用程序?