OpenCV IplImage数据将浮动

问题描述

| 有没有一种方法可以将IplImage指针转换为浮点指针?基本上将imagedata转换为float。 感谢对此的任何帮助。     

解决方法

        使用
cvConvert(src,dst)
,其中
src
是源图像,
dst
是预分配的浮点图像。 例如。
dst = cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,1);
cvConvert(src,dst);
    ,        
// 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),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);
    ,        您无法通过简单地投射指针将图像转换为浮动图像。您需要遍历每个像素并计算新值。 请注意,大多数浮动图像类型都假定范围为0-1,因此您需要将每个像素除以所需的最大值。