关于openCv的问题

时间:2011-06-27 09:04:00

标签: opencv

在openCv中,当我们将矩阵的类型从CV_8U更改为CV_64F或CV_32F时,我们还应该将矩阵的元素除以255,因为CV_8u的范围是0-255而CV_32F是0-1?

2 个答案:

答案 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)个浮点值