【问题标题】:OpenCV IplImage data to floatOpenCV IplImage 数据浮动
【发布时间】:2011-09-15 00:33:42
【问题描述】:

有没有办法将 IplImage 指针转换为浮点指针?基本上将图像数据转换为浮点数。 感谢您对此的任何帮助。

【问题讨论】:

    标签: opencv iplimage


    【解决方案1】:

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

    例如

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

    【讨论】:

    • 我会补充:“然后然后你可以(并且必须)将 imageData 转换为浮动。”
    【解决方案2】:
    // 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);
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-07-08
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-18
        • 2011-08-05
        • 2014-01-31
        相关资源
        最近更新 更多