海康说明书中相关内容:
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
--------------------------------------------------------------------------请高人们帮我看看,我错在哪?应该怎么改才对,谢谢了!!!在线等

解决方案 »

  1.   

    你vb中的函数定义有问题,你可以如下试试
    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