在openCv中,当我们将矩阵的类型从CV_8U更改为CV_64F或CV_32F时,我们还应该将矩阵的元素除以255,因为CV_8u的范围是0-255而CV_32F是0-1?
答案 0 :(得分:2)
是
如果你有一个直接从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()。
答案 1 :(得分:0)
CV_32F是介于0和1之间的2 ^(32 - 1)个浮点值 CV_64F是0到1之间的2 ^(64 - 1)个浮点值