C#获取海康摄像头当前帧的图片

前言

应为某些原因,不得不获取海康摄像头当前帧的图片,但是遇到了很多奇怪的事情,最终这版代码运行成功了,记录一下,希望也能帮助大伙少走弯路(海康门禁机、ai摄像头也知道一点、有人想知道的话也能留言一下,看到了我也会发相关的文章)


二、使用步骤

1.在海康官网下载相关sdk引入CHCNetSDK.cs

2.直接看下面代码

/// <summary>
/// 获取图片(需要先登入)
/// </summary>
/// <param name="Index">通道号(由1开始)</param>
/// <param name="Quality">图片质量系数 0-最好 1-较好 2-一般</param>
public System.Drawing.Bitmap GetBitmap(int Index, ushort Quality = 1)
{
    byte[] bytes = new byte[1024 * 10000];//给10M缓冲区
    var parameter = new CHCNetSDK.NET_DVR_JPEGPARA();
    /*注意:当图像压缩分辨率为VGA时,支持0=CIF, 1=QCIF, 2=D1抓图,
    当分辨率为3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA,7=XVGA, 8=HD900p
    仅支持当前分辨率的抓图*/
    /* 0=CIF, 1=QCIF, 2=D1 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA*/
    //parameter.wPicSize = 9;
    /* 图片质量系数 0-最好 1-较好 2-一般 */
    parameter.wPicQuality = Quality;
    uint lpSizeReturned = 0;
    var IsSuccess = CHCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(m_lUserID, Index, ref parameter, bytes, (uint)bytes.Length, ref lpSizeReturned);
    if (!IsSuccess)
    {
        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
        OnExceptionEvent("NET_DVR_CapturePicture failed, error code= " + iLastErr);
        return null;
    }
    var bitmap = new System.Drawing.Bitmap(new MemoryStream(bytes, 0, (int)lpSizeReturned));
    //bitmap.Save(AppDomain.CurrentDomain.BaseDirectory + "Data\\111.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
    return bitmap;
}

4.踩坑记录

  • 如果iLastErr =43,那需要查看是不是byte[] bytes = new byte[1024 * 10000]给的缓冲区太小了
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: c是英文字母表中的第三个字母。它是一个辅音字母,发音为/k/。c在英语中有许多常见的用法和意义。 首先,c可以用作词语的开头。例如,cat(猫)、car(汽车)、cake(蛋糕)等等。这些单词都是由字母c开头的,相应地带有/c/的发音。 此外,c也可以用作单词中的中间或结尾字母。例如,beach(海滩)、school(学校)、music(音乐)等词就都有c这个字母。 在数学中,c可以代表很多不同的意义。比如,c可以代表圆的周长或直径。当c用来表示圆周长时,它的值等于2πr,其中r是圆的半径。此外,c也可以代表光速,即光在真空中的传播速度,其数值约为299792458米/秒。 在计算机科学中,c是一种编程语言的名称。C编程语言是一种通用的、高级的程序设计语言,可以用于开发各种不同类型的软件,包括操作系统和应用软件。C语言被广泛使用,并且被认为是一种强大和灵活的语言。 综上所述,c是一个英文字母,在不同的领域中有不同的用法和意义。它可以作为词语的开头、中间或结尾字母,在数学和计算机科学中也有特定的含义。 ### 回答2: c是英文字母表中的第三个字母,也是一个非常常见的字母。在英语中,c有时候表示不同的音标,例如在单词"cat"中,c发音为/k/;而在单词"face"中,c则发音为/s/。c还常常出现在很多常用词中,比如"can"(能够)、"come"(来)和"call"(打电话)等等。 除了在英语中,c在其他许多语言中也有广泛的应用。在法语中,c有时发音为/s/,有时发音为/k/,例如单词"ce"(这)和"commencer"(开始);而在西班牙语中,c可以发音为/th/,例如单词"cenar"(晚餐)。 在科学领域,c也有特殊的意义。在物理学中,c代表着光速的数值,即299792458米/秒。这个数值在相对论中起到了关键的作用,它表示光在真空中传播的速度,也是目前宇宙中最快的速度。 总的来说,c虽然只是一个简单的字母,但在语言和科学中都扮演着重要的角色。无论是作为一个音标还是一个符号,c都有其特定的含义和用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值