欢迎光临散文网 会员登陆 & 注册

来自视觉人机器视觉粉丝的分享-C#中调用海康相机进行图像采集

2023-03-15 23:54 作者:visionman专业于机器视觉  | 我要投稿

要在C#中调用海康相机进行图像采集,需要使用海康SDK提供的API。以下是实现这个过程的一般步骤:

1. 在计算机上安装海康相机的驱动程序以及海康SDK。

2. 编写C#应用程序,并添加对SDK库的引用。

3. 初始化SDK并连接到相机。

4. 配置相机采集参数,例如帧率、曝光时间等。

5. 开始图像采集,并将采集到的图像数据存储到缓冲区中。

6. 将缓冲区中的图像数据转换为Bitmap格式或其他格式,以便在C#应用程序中显示或处理。

7. 停止图像采集,并释放相关资源。

下面是一些示例代码,可以作为参考:

```csharp

using System;

using System.Drawing;

using System.Windows.Forms;

using HCNetSDK; // 海康SDK的命名空间

namespace CameraDemo

{

   public partial class Form1 : Form

    {

        private CHCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo; 

// 设备信息结构体

        private int userId = -1; // 用户ID

        private int realHandle = -1; // 实时预览句柄

        public Form1()

        {

            InitializeComponent();

        }

        private void btnStart_Click(object sender, EventArgs e)

        {

            // 初始化SDK

            bool initResult = CHCNetSDK.NET_DVR_Init();

            if (!initResult)

            {

                MessageBox.Show("SDK初始化失败!");

                return;

            }

            // 登录设备

            string ip = txtIP.Text.Trim();

            int port = int.Parse(txtPort.Text.Trim());

            string userName = txtUserName.Text.Trim();

            string password = txtPassword.Text.Trim();

            CHCNetSDK.NET_DVR_USER_LOGIN_INFO loginInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO();

            loginInfo.sDeviceAddress = ip;

            loginInfo.wPort = (ushort)port;

            loginInfo.sUserName = userName;

            loginInfo.sPassword = password;

            deviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();

            userId = CHCNetSDK.NET_DVR_Login_V30(ref loginInfo, ref deviceInfo);

            if (userId < 0)

            {

                MessageBox.Show("登录设备失败!");

                return;

            }

            // 预览图像

            IntPtr ptrRealHandle = IntPtr.Zero;

            CHCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();

            previewInfo.lChannel = 1; // 通道号

            previewInfo.dwStreamType = 0; // 码流类型为主码流

            previewInfo.dwLinkMode = 0x0000; // TCP模式

            previewInfo.bBlocked = true; // 同步播放

            ptrRealHandle = pictureBox.Handle; // 图像显示控件的句柄

            realHandle = CHCNetSDK.NET_DVR_RealPlay_V40(userId, ref previewInfo, null, IntPtr.Zero);

            if (realHandle < 0)

            {

                MessageBox.Show("预览图像失败!");

                CHCNetSDK.NET_DVR_Logout(userId);

                CHCNetSDK.NET_DVR_Cleanup();

                return;

            }

        }

        private void btnStop_Click(object sender, EventArgs e)

        {

            // 停止预览

            bool stopResult = CHCNetSDK.NET_DVR_StopRealPlay(realHandle);

            if (!stopResult)

            {

                MessageBox.Show("停止预览失败!");

            }

            // 注销用户

            bool logoutResult = CHCNetSDK.NET_DVR_Logout(userId);

            if (!logoutResult)

            {

                MessageBox.Show("注销用户失败!");

            }

            // 释放SDK资源

            bool cleanupResult = CHCNetSDK.NET_DVR_Cleanup();

            if (!cleanupResult)

            {

                MessageBox.Show("SDK资源释放失败!");

            }

        }

    }

}

```

请注意,此示例代码仅涵盖了基本的图像采集和预览功能。如需进行更高级的图像处理或其他操作,请参考海康SDK提供的文档和示例代码。


来自视觉人机器视觉粉丝的分享-C#中调用海康相机进行图像采集的评论 (共 条)

分享到微博请遵守国家法律