在openCv中,当我们将矩阵的类型从CV_8U更改为CV_64F或CV_32F时,我们是否也应该将矩阵的元素除以255,因为CV_8U的范围是0-255,CV_32F的范围是0-1?
是。
如果您有一个从8位图像直接转换而来的32位浮点图像,而没有任何缩放,那么它的值范围将为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()。
CV_32F是介于0和1之间的2^(32-1)个浮点值CV_64F是介于0和1 之间的2^(64-1)浮点值