Y
YuD
Unregistered / Unconfirmed
GUEST, unregistred user!
以下为vc的函数定义说明
拷贝当前帧的图像数据
参数: nWidth: 指向用来返回图像宽度单元的指针
nHeight: 指向用来返回图像高度单元的指针
nInterlace: 保留
long nType: 需要读取图像的格式:1:灰度,3:24位真彩色
varpD: 指向用来接收图象数据的缓冲区的指针,该缓冲区大小应能容纳整个数据,在不知大小时应大于768×576×3字节
long CopyCurrentFrameData(long* nWidth, long* nHeight, long* nInterlace, long nType, const VARIANT&
varpD);
以下为vc的例子
long nImgWidth;
long nImgHeight;
BYTE *bpImg=(BYTE *)malloc(768*576*3);
varTmp.vt=VT_PTR; varTmp.pbVal=bpImg;
if(SPlayer1.CopyCurrentFrameData((long *)&nImgWidth,(long *)&nImgHeight,(long *)&nInterlace,2,varTmp)==0)
AfxMessageBox("读取错误");
else
//图像处理
free(bpImg);
以下是我在Delphi中的函数叫用方法可是提示
procedure TForm1.Button7Click(Sender: TObject);
var
nImgWidth,nImgHeight,nInterlace:Longint;
bpImgByte;
varTmp:variant;
begin
getmem(bpImg,768*576*3);
TvarData(varTmp).VType:=varByRef;
TvarData(varTmp).VPointer:=pointer(@bpImg);
if SPlayer1.CopyCurrentFrameData(nImgwidth,
nimgHeight,
nInterlace,2,vartmp)=0 then
{
if SPlayer1.CopyCurrentFrameData(@nImgwidth,
@nimgHeight,
@nInterlace,2,vartmp) then
}
begin
//---提示失败
end
else
begin
//数据处理
end;
FreeMem(bpImg);
end;
-----------------------
运行时提示 ‘access violation at 0xXXXXXXXX:read of address 0xXXXXXXXX’
如果运行{}中的代码编译不同过。
提示如下
‘[Error] Unit1.pas(125): Types of actual and formal var parameters must be identical’
请各位朋友指教。
拷贝当前帧的图像数据
参数: nWidth: 指向用来返回图像宽度单元的指针
nHeight: 指向用来返回图像高度单元的指针
nInterlace: 保留
long nType: 需要读取图像的格式:1:灰度,3:24位真彩色
varpD: 指向用来接收图象数据的缓冲区的指针,该缓冲区大小应能容纳整个数据,在不知大小时应大于768×576×3字节
long CopyCurrentFrameData(long* nWidth, long* nHeight, long* nInterlace, long nType, const VARIANT&
varpD);
以下为vc的例子
long nImgWidth;
long nImgHeight;
BYTE *bpImg=(BYTE *)malloc(768*576*3);
varTmp.vt=VT_PTR; varTmp.pbVal=bpImg;
if(SPlayer1.CopyCurrentFrameData((long *)&nImgWidth,(long *)&nImgHeight,(long *)&nInterlace,2,varTmp)==0)
AfxMessageBox("读取错误");
else
//图像处理
free(bpImg);
以下是我在Delphi中的函数叫用方法可是提示
procedure TForm1.Button7Click(Sender: TObject);
var
nImgWidth,nImgHeight,nInterlace:Longint;
bpImgByte;
varTmp:variant;
begin
getmem(bpImg,768*576*3);
TvarData(varTmp).VType:=varByRef;
TvarData(varTmp).VPointer:=pointer(@bpImg);
if SPlayer1.CopyCurrentFrameData(nImgwidth,
nimgHeight,
nInterlace,2,vartmp)=0 then
{
if SPlayer1.CopyCurrentFrameData(@nImgwidth,
@nimgHeight,
@nInterlace,2,vartmp) then
}
begin
//---提示失败
end
else
begin
//数据处理
end;
FreeMem(bpImg);
end;
-----------------------
运行时提示 ‘access violation at 0xXXXXXXXX:read of address 0xXXXXXXXX’
如果运行{}中的代码编译不同过。
提示如下
‘[Error] Unit1.pas(125): Types of actual and formal var parameters must be identical’
请各位朋友指教。