gpt4 book ai didi

c - 指针无法读取图像数据

转载 作者:行者123 更新时间:2023-11-30 17:41:56 27 4
gpt4 key购买 nike

我正在尝试从高端数码相机读取像素数据。图片大小为320 * 256像素,大小为2字节。

Int8* ImageBuffer = (Int8 *) malloc(320 * 256 * 2); 
Int32 result = imgGrab ((void **)&ImageBuffer);

上面的代码读取图像,但我不确定如何获取像素数据。

我尝试了以下方法;

WORD* myImage = (WORD*)malloc(320*256*2);
memcpy (myImage, ImageBuffer, 320*256*2 );

所以我这样做是为了将 8 位 ImageBuffer 转换为 16 位,因为每个像素是 2 个字节。我认为我走在正确的轨道上,但是我在 myImage 中获取的数据不正确。主要是零,包含负数。

我想知道我是否感到困惑,因为 imgGrab 的第二个参数是指向指针的指针。该手册将第二个参数描述为“指向存储图像的内存区域的指针”

那么这个函数正在做我认为它正在做的事情吗?将图像的像素数据复制到myImage?

memcpy (myImage, ImageBuffer, 320*256*2 );

感谢您的帮助。

最佳答案

首先,指向指针的指针暗示您不需要需要分配此内存。您需要传递一个指向 imgGrab 的指针,而 imgGrab 实际上会使其指向它已分配的缓冲区。所以你只是有内存泄漏。而且,您不需要 memcpy 和额外的缓冲区来执行这种类型的转换。应该是这样的:

WORD* myImage = 0;
Int32 result = imgGrab ((void **)&myImage );

但是,您在那里所做的应该在您的 myImage 缓冲区中产生相同的结果,因此除了您的代码片段之外,可能还有其他问题。

关于c - 指针无法读取图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20921451/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com