图像采集,定义byte* pData = new (memSize),采集卡内存中有个Buffer存了N帧图像。如何获得Buffer中第N帧数据?采集卡手册提供Buffer结构为 
SturctBuffer
 {
     ......
     byte** Buffer;
}
函数GetBufferStatus()可以返回SturctBuffer,SDK提供使用函数GetImge(byte*pSrc,byte*pDst)来获得Buffer中某一帧的数据。SDK强调,如果人为释放Buffer,DLL会崩溃。我是这么做的:StructBuffer struBuf = GetBufferStatus();
byte** pTemp = struBuf.Buffer; 
pSrc= pTemp[N];
pDst = new [memSize]
GetImage(pSrc,pDst);
但是存储后的图像发现为黑色,数值全部为零,即pDst 中数据全为0,这是怎么回事呢?或者如何查看pDst中数据是否为0呢?多谢各位帮忙,急用啊

解决方案 »

  1.   

    最好在SturctBuffer里增加结构本身的大小
      

  2.   


    结构里面是有结构大小的,我用省略号略去了。现在的问题是如何将**Buffer中的数据取出来赋值给byte *pData呢? 多谢啦!
      

  3.   

    你知道**Buffer的大小吗?memcpy到pData试试
      

  4.   


    问题已经解决了,但是获得的数据顺序有问题。**Buffer的大小大概是800M,但是具体不确定。Buffer中存储的是N幅图像数据的起始地址。每个图像数据大小为cxWidth*cyHeight。随着采集卡不断向Buffer中写入数据,图像数目N会不断增加,直到存满为止。采集卡提供的API 函数 StructBufferStatus =GetBufferStatus()可以获取Buffer中当前写入数据所在的Buffer位置,
     struct StructBufferStatus
    {
       long BufferCount;
       byte**Buffer;
       long lastValidFrameSavedtoRAM;
       long TotalFrameCapturedbyCamera;
       long BufferSizeinMegaByte;
    }
    我是利用lastValidFrameSavedtoRAM 作为nIndex 来获得最新图像数据的指针,即Buffer[nIndex ];
    实际得到的数据不是Buffer中的顺序,这是为何呢