OpenCV IplImage数据浮动

时间:2011-06-14 20:10:06

标签: opencv iplimage

有没有办法将IplImage指针转换为浮点指针?基本上将imagedata转换为float。 感谢任何帮助。

3 个答案:

答案 0 :(得分:7)

使用cvConvert(src,dst)其中src是源图像,dst是预分配的浮点图像。

E.g。

dst = cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,1);
cvConvert(src,dst);

答案 1 :(得分:1)

// Original image gets loaded as IPL_DEPTH_8U
IplImage* colored = cvLoadImage("coins.jpg", CV_LOAD_IMAGE_UNCHANGED);
if (!colored)
{   
    printf("cvLoadImage failed!\n");
    return; 
}   

// Allocate a new IPL_DEPTH_32F image with the same dimensions as the original
IplImage* img_32f = cvCreateImage(cvGetSize(colored), 
                                  IPL_DEPTH_32F, 
                                  colored->nChannels);
if (!img_32f)
{   
    printf("cvCreateImage failed!\n");
    return;
}   

cvConvertScale(colored, img_32f);

// quantization for 32bit. Without it, this img would not be displayed properly
cvScale(img_32f, img_32f, 1.0/255);

cvNamedWindow("test", CV_WINDOW_AUTOSIZE);
cvShowImage ("test", img_32f);

答案 2 :(得分:0)

通过简单地转换指针,您无法将图像转换为浮动。您需要遍历每个像素并计算新值。

请注意,大多数浮动图像类型的范围为0-1,因此您需要将每个像素除以您想要的最大值。