Использование openCV convertTo для изменения битовой глубины изображения, кажется, «повреждает» изображение? - PullRequest
1 голос
/ 09 апреля 2020

У меня есть cv::Mat image типа CV_16SC3 (16-битная подпись, 3 канала). Перед использованием convertTo для изменения глубины с 16 бит на 8 бит изображение выглядит следующим образом:

enter image description here

Мне нужно сделать изображение таким Тип: CV_8UC3. Попытался преобразовать его следующим образом:

image.convertTo(image, CV_8U, 0.00390625);

( source )

Однако это привело к этому изображению здесь: enter image description here

Есть идеи, почему это так и как я могу это исправить?

1 Ответ

1 голос
/ 09 апреля 2020

Если вы посмотрите документацию OpenCV на функцию cv::convertTo, формула, используемая для вычисления значений пикселей:

m(x,y) = staturate_cast<rType>(alpha (*this)(x, y) + beta)

Это означает, что значение пикселя умножается на alpha и добавлено с beta (= 0 по умолчанию). Ваше значение alpha очень низкое (alpha = 0.00390625). Вот почему вы видите черное изображение. Попробуйте использовать большее значение для alpha. Например, вы можете использовать alpha = 0.7 или 1, значение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...