Я хочу использовать adaptiveThreshold
функция от OpenCV чтобы определить соответствующие локальные пороговые значения для значений в 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 является открытым исходным кодом. Просто найдите исходный код adaptiveThreshold () и измените его для своего собственного использования.