Вопрос по openCv - PullRequest
       4

Вопрос по openCv

1 голос
/ 27 июня 2011

В openCv, когда мы меняем тип матрицы с CV_8U на CV_64F или CV_32F, мы также должны делить элементы матрицы на 255, поскольку диапазон CV_8u равен 0-255, а CV_32F равен 0-1?

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Да.

Если у вас есть 32-битное изображение с плавающей запятой, напрямую преобразованное из 8-битного изображения без какого-либо масштабирования, то оно будет иметь диапазон значений 0..255 вместопредполагается функцией 0..1.Итак, перед вызовом cvtColor вам нужно сначала уменьшить изображение:

img *= 1./255;
cvtColor(img, img, CV_BGR2Luv);

с: http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html

Если вы используете c ++, то вы можете сделать:

originalMatrix.convertTo(temp, CV_64F, 1./255);

Мой код доставлял мне головную боль, пока я не сделал это преобразование.Если вы используете версию C, вам, вероятно, придется использовать cvConvertScale ().

0 голосов
/ 27 июня 2011

CV_32F - это 2 ^ (32 - 1) значения с плавающей запятой между 0 и 1 CV_64F - это 2 ^ (64 - 1) значения с плавающей запятой между 0 и 1

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