指针无法读取图像数据

时间:2014-01-04 13:13:13

标签: c pointers image-processing

我正在尝试从高端数码相机中读取像素数据。图像大小为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 );

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

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

这个功能正在做我认为它正在做的事情,即。将图像的像素数据复制到myImage?

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,指向的指针是你需要分配这个内存的提示。您需要将指针传递给imgGrab,而imgGrab实际上会指向它已分配的缓冲区。所以你只是在那里有内存泄漏。而且,你不需要memcpy和额外的缓冲来做这种演员。应该是这样的:

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

但是,你在那里做的应该在你的myImage缓冲区产生相同的结果,所以在你的代码片段之外可能还有其他错误。