设置首页收藏本站
开启左侧

迈德威视SDK请教

[复制链接]
sdsd 发表于 2020-6-1 22:49:28 | 显示全部楼层 |阅读模式
在c#  SDK里  status = MvApi.CameraGrabber_Create(out m_Grabber, ref DevList[0]);


CameraHandle m_hCamera  不是表示相机句柄哇  
那m_Grabber 表示什么 ???
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2020-6-3 10:42:01 | 显示全部楼层
首先,MvApi.CameraGrabber_Create这是一个委托方法的对象,定义如下:
  1. public static pfnCameraGrabber_Create CameraGrabber_Create;
复制代码

原型类型pfnCameraGrabber_Create定义如下,就是带一个采集指针和设备信息
  1. /******************************************************/
  2.         // 函数名   : CameraGrabber_Create
  3.         // 功能描述 : 从设备描述信息创建Grabber
  4.         // 参数     : Grabber    如果函数执行成功返回函数创建的Grabber对象
  5.         //                          pDevInfo        该相机的设备描述信息,由CameraEnumerateDevice函数获得。
  6.         // 返回值   : 成功时,返回CAMERA_STATUS_SUCCESS (0);
  7.         //            否则返回非0值的错误码,请参考CameraStatus.h
  8.         //            中错误码的定义。
  9.         /******************************************************/
  10.         public delegate CameraSdkStatus pfnCameraGrabber_Create(
  11.             out IntPtr Grabber,
  12.             ref tSdkCameraDevInfo pDevInfo
  13.         );
复制代码


相机设备信息类型定义如下:
  1.     public struct tSdkCameraDevInfo
  2.     {
  3.         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
  4.         public byte[] acProductSeries; // 产品系列
  5.         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
  6.         public byte[] acProductName;    // 产品名称
  7.         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
  8.         public byte[] acFriendlyName;   // 昵称,后加#和索引号来区分
  9.         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
  10.         public byte[] acLinkName;       // 设备符号连接名,内部使用
  11.         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
  12.         public byte[] acDriverVersion;  // 驱动版本
  13.         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
  14.         public byte[] acSensorType;     // sensor类型
  15.         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
  16.         public byte[] acPortType;       // 接口类型  
  17.         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
  18.         public byte[] acSn;             // 产品唯一序列号
  19.         public uint uInstance;        // 该型号相机在该电脑上的实例索引号,用于区分同型号多相机

  20.     }
复制代码

那么m_Grabber 是什么呢?
  1. protected IntPtr m_Grabber = IntPtr.Zero;
复制代码

上面的函数注释里面有这句话解释:
  1. 如果函数执行成功返回函数创建的Grabber对象
复制代码

微信截图_20200603103500.png
从代码中出现的定义可以看到,代表的就是相机采集对象(指针对象),通过它就可以设置和操控相机!

那m_hCamera是什么?这个代表相机的句柄,代表的是相机的资源,和采集对象不一样的!
但是我们可以通过采集对象获取相机的句柄来进行操作(部分函数需要这个句柄而不是采集对象),也可以通采集对象获取设备信息!
  1. MvApi.CameraGrabber_GetCameraDevInfo(m_Grabber, out m_DevInfo);
  2. MvApi.CameraGrabber_GetCameraHandle(m_Grabber, out m_hCamera);
复制代码


奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| sdsd 发表于 2020-6-5 10:58:00 | 显示全部楼层
Criss 发表于 2020-6-3 10:42
首先,MvApi.CameraGrabber_Create这是一个委托方法,定义如下:

原型类型pfnCameraGrabber_Create定义如 ...

非常感谢您的宝贵时间,给予这么详细的解答。谢谢
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
5279Halcon 发表于 2023-4-24 23:04:56 | 显示全部楼层
大佬博学,学习膜拜
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表