【问题标题】:Convert float array image to a format usable for opencv将浮点数组图像转换为可用于 opencv 的格式
【发布时间】:2010-12-08 08:45:34
【问题描述】:

我想知道是否有一种简单的方法可以将我的浮点数组图像转换为 iplimage, 可以通过opencv处理。当然,我可以创建一个相同大小的空 iplimage,然后将浮点数组图像中的所有像素复制到空 iplimage,但是有没有更优雅的解决方案。也许是一种更快、更少内存消耗的方法,因为源图像非常大并且复制过程需要一段时间。

最好的问候,

正补

【问题讨论】:

    标签: c++ c image-processing opencv


    【解决方案1】:

    你可以这样做(假设是 32 位浮点数):

    float* my_float_image_data;
    
    CvSize size;
    size.height = height ;
    size.width = width;
    IplImage* ipl_image_p = cvCreateImageHeader(size, IPL_DEPTH_32F, 1);
    ipl_image_p->imageData = my_float_image_data;
    ipl_image_p->imageDataOrigin = ipl_image_p->imageData;
    

    【讨论】:

    • OpenCV 文档说 IplImage->imageData 是 char 类型。在这个例子中,它是一个浮点数组——它是如何工作的。另外,我想知道,图像数据是二维数组还是扁平化为一维?
    • @freakTheMighty 数据存储在 char 数组中,但每 4 个字节被解释为一个浮点数。在 C 中这是可能的:)。有关详细说明,请参阅 comp.leeds.ac.uk/vision/opencv/iplimage.html
    【解决方案2】:

    您可以在 cmets here 之后“手动”填充 iplimage 结构来描述您的数组。

    字段 imageData 将指向您的原始数组。

    但是不要在它上面使用释放函数。最后删除结构即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-09
      • 2017-08-31
      • 2019-01-06
      • 2023-03-21
      • 2012-12-17
      • 2014-05-24
      • 2020-07-13
      相关资源
      最近更新 更多