图像采集,定义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呢?多谢各位帮忙,急用啊
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呢?多谢各位帮忙,急用啊
结构里面是有结构大小的,我用省略号略去了。现在的问题是如何将**Buffer中的数据取出来赋值给byte *pData呢? 多谢啦!
问题已经解决了,但是获得的数据顺序有问题。**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中的顺序,这是为何呢