Как использовать adaptiveThreshold из OpenCV для значений, превышающих 255 (то есть тип CV_8UC1)?

Я хочу использовать 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… Такое ощущение, что я наблюдаю за чем-то довольно простым, но я не могу понять, как решить проблему …

0

Решение

Боюсь, что нет такой опции для более широкого диапазона значений. Но довольно просто получить версию, которая принимает «двойные» значения, так как OpenCV является открытым исходным кодом. Просто найдите исходный код adaptiveThreshold () и измените его для своего собственного использования.

1

Другие решения


По вопросам рекламы [email protected]