Да.
Если у вас есть 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 ().