devbox
我家自动化
这个屌丝很懒,什么也没留下!
当前位置:   article > 正文

VS(C#)调用海康工业相机SDK采集图像及基本功能设定_vs2019c#调用海康威视库

vs2019c#调用海康威视库

VS(C#)调用海康工业相机SDK采集图像及基本功能设定

简介
由于工作关系,本人最近使用到了海康的网口及USB3.0接口的工业相机。现将相关内容进行整理记录。
开发环境
64位VS2013 +C#
Halcon12
海康MVS3.0.0

引用海康相机动态库(MvCameraControl.Net.dll)
在VS项目文件中添加添加引用,如下图
在这里插入图片描述
引用MVS安装目录下MVS\Development\DotNet\MvCameraControl.Net.dll这个文件。
创建相机类
鼠标右键单击工程项目–添加–类,选择“类”,输入类的名称,例如Hikvision,点击右下角的“添加”。
在项目中使用海康相机时,为便于程序编写,可引入如下的命名空间:
using MvCamCtrl.NET;
创建需要用到的全局变量

public MyCamera myCamera;//相机对象
private MyCamera.MV_CC_DEVICE_INFO_LIST deviceList;//设备列表
private MyCamera.MV_CC_DEVICE_INFO deviceInfo;//设备对象
private string seriesStr;//接收相机序列号
private MyCamera.MVCC_INTVALUE stParam;//用于接收特定的参数
//为读取、保存图像创建的数组
UInt32 m_nBufSizeForDriver = 4096 * 3000;
byte[] m_pBufForDriver = new byte[4096 * 3000];
UInt32 m_nBufSizeForSaveImage = 4096 * 3000 * 3 + 3000;
byte[] m_pBufForSaveImage = new byte[4096 * 3000 * 3 + 3000];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

创建相关函数
1.创建构造函数

//在构造函数中实例化设备列表对象
public Hikvision()
 {
     deviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST();
 }
  • 1
  • 2
  • 3
  • 4
  • 5

2.创建改变相机IP的函数

//成功返回0失败返回-1
//调用函数时可以传入需要改变的目标IP,如过没有传入则将相机IP设置为其所连接的网卡地址+1或-1
public int changeIP(string IP = "")
{
   try
   {
         //获取相机相关信息,例如相机所连接网卡的网址
          IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(deviceInfo.SpecialInfo.stGigEInfo, 0);
          MyCamera.MV_GIGE_DEVICE_INFO gigeInfo = (MyCamera.MV_GIGE_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_GIGE_DEVICE_INFO));
          IPAddress cameraIPAddress;
          string tempStr = "";
          if (IP.Trim().Equals("") || !(IPAddress.TryParse(IP, out cameraIPAddress)))
          {
               //当前网卡的IP地址
               UInt32 nNetIp1 = (gigeInfo.nNetExport & 0xFF000000) >> 24;
               UInt32 nNetIp2 = (gigeInfo.nNetExport & 0x00FF0000) >> 16;
               UInt32 nNetIp3 = (gigeInfo.nNetExport & 0x0000FF00) >> 8;
               UInt32 nNetIp4 = (gigeInfo.nNetExport & 0x000000FF);
               //根据网卡IP设定相机IP,如果网卡ip第四位小于252,则相机ip第四位+1,否则相机IP第四位-1
              UInt32 cameraIp1 = nNetIp1;
              UInt32 cameraIp2 = nNetIp2;
              UInt32 cameraIp3 = nNetIp3;
              UInt32 cameraIp4 = nNetIp4;
              if (nNetIp4 < 252)
              {
                    cameraIp4++;
              }
              else
              {
                     cameraIp4--;
              }
              tempStr = cameraIp1 + "." + cameraIp2 + "." + cameraIp3 + "." + cameraIp4;
          }
          else
          {
        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/706502
推荐阅读
相关标签
  

闽ICP备14008679号