海康说明书中相关内容:
5071.获取原始图像:GetOriginalImage()
函数:int GetOriginalImage(HANDLE hChannelHandle,UCHAR *ImageBuf,ULONG *Size);
参数:HANDLE hChannelHandle 通道句柄
UCHAR *ImageBuf 原始图像指针
ULONG *Size 原始图像的大小(注:调用前是imagebuf的大小,调用后是实际图像所使用的字节数)
返回:正确为0,其他为第4节定义的错误号;
说明:获得原始图像,DS4000HC 原始图像是标准的 4CIF 图像格式(包括 QCIF 编码),用户程序可调用 SaveYUVToBmpFile 来生成 24 位的 bmp 文件;DS400xH 卡的原始图象是 CIF 图象格式。5072.图像保存:SaveYUVToBmpFile()
函数:int SaveYUVToBmpFile(char *FileName, unsigned char *yuv, int Width, int Height)
参数:char *FileName 文件名
unsigned char *yuv YUV422 格式的图像指针
int Width YUV 图像的宽度
int Height YUV 图像的高度
说明:把 yuv 图像转成 bmp 文件,如果是 DS4000HC 卡抓图则 Width 为 704,Height 为 576(PAL)或480(NTSC),如果是DS400xH卡抓图则 Width 可能为 352 或 176,Height 为 288、240、144 或 120,要根据缓冲区的大小来判断。
-------------------------------------------------------------------------
我的代码如下:
Public Declare Function SaveYUVToBmpFile Lib "DS40xxSDK.dll" (ByVal FileName As String, ByVal yuv As Long, ByVal Width As Long, ByVal Height As Long) As Long
Public Declare Function GetOriginalImage Lib "DS40xxSDK.dll" (ByVal hChannelHandle As Long, ByVal ImageBuf As Long, ByRef Size As Long) As LongPrivate Sub Command5_Click()
Const lngSize As Long = 704# * 480 * 2 'PAL制式
ReDim ImageBuf(lngSize) As Byte
'g_ChannelHandle(0)是第一通道句柄
GetOriginalImage g_ChannelHandle(0), ImageBuf, lngSize '执行这句的时候VB报错,点不发送,VB自动关闭了
If SaveYUVToBmpFile(App.Path & "\11111.bmp", ImageBuf, 704, 576) <> 0 Then ErrProc 0, "报错"
End Sub
--------------------------------------------------------------------------请高人们帮我看看,我错在哪?应该怎么改才对,谢谢了!!!在线等
5071.获取原始图像:GetOriginalImage()
函数:int GetOriginalImage(HANDLE hChannelHandle,UCHAR *ImageBuf,ULONG *Size);
参数:HANDLE hChannelHandle 通道句柄
UCHAR *ImageBuf 原始图像指针
ULONG *Size 原始图像的大小(注:调用前是imagebuf的大小,调用后是实际图像所使用的字节数)
返回:正确为0,其他为第4节定义的错误号;
说明:获得原始图像,DS4000HC 原始图像是标准的 4CIF 图像格式(包括 QCIF 编码),用户程序可调用 SaveYUVToBmpFile 来生成 24 位的 bmp 文件;DS400xH 卡的原始图象是 CIF 图象格式。5072.图像保存:SaveYUVToBmpFile()
函数:int SaveYUVToBmpFile(char *FileName, unsigned char *yuv, int Width, int Height)
参数:char *FileName 文件名
unsigned char *yuv YUV422 格式的图像指针
int Width YUV 图像的宽度
int Height YUV 图像的高度
说明:把 yuv 图像转成 bmp 文件,如果是 DS4000HC 卡抓图则 Width 为 704,Height 为 576(PAL)或480(NTSC),如果是DS400xH卡抓图则 Width 可能为 352 或 176,Height 为 288、240、144 或 120,要根据缓冲区的大小来判断。
-------------------------------------------------------------------------
我的代码如下:
Public Declare Function SaveYUVToBmpFile Lib "DS40xxSDK.dll" (ByVal FileName As String, ByVal yuv As Long, ByVal Width As Long, ByVal Height As Long) As Long
Public Declare Function GetOriginalImage Lib "DS40xxSDK.dll" (ByVal hChannelHandle As Long, ByVal ImageBuf As Long, ByRef Size As Long) As LongPrivate Sub Command5_Click()
Const lngSize As Long = 704# * 480 * 2 'PAL制式
ReDim ImageBuf(lngSize) As Byte
'g_ChannelHandle(0)是第一通道句柄
GetOriginalImage g_ChannelHandle(0), ImageBuf, lngSize '执行这句的时候VB报错,点不发送,VB自动关闭了
If SaveYUVToBmpFile(App.Path & "\11111.bmp", ImageBuf, 704, 576) <> 0 Then ErrProc 0, "报错"
End Sub
--------------------------------------------------------------------------请高人们帮我看看,我错在哪?应该怎么改才对,谢谢了!!!在线等
Public Declare Function SaveYUVToBmpFile Lib "DS40xxSDK.dll" (ByVal FileName As String, ByRef yuv As Byte, ByVal Width As Long, ByVal Height As Long) As Long
Public Declare Function GetOriginalImage Lib "DS40xxSDK.dll" (ByVal hChannelHandle As Long, ByRef ImageBuf As Byte, ByRef Size As Long) As LongPrivate Sub Command5_Click()
Const lngSize As Long = 704# * 480 * 2 'PAL制式
ReDim ImageBuf(lngSize) As Byte
'g_ChannelHandle(0)是第一通道句柄
GetOriginalImage g_ChannelHandle(0), ImageBuf(0), lngSize
If SaveYUVToBmpFile(App.Path & "\11111.bmp", ImageBuf(0), 704, 576) <> 0 Then ErrProc 0, "报错"
End Sub