一.背景

需要用C#调用海康相机SDK采集图片,并将采集的图片以Byte[]数组的形式传递给C++版视觉处理dll

二.步骤

1.声明变量

        public MyCamera myCamera;//相机对象MyCamera.MV_CC_DEVICE_INFO_LIST m_pDeviceList;        IntPtr m_BufForDriver = IntPtr.Zero;private static Object BufForDriverLock = new Object();

2.初始化相机

 public int InitCamera(IntPtr handle){//枚举设备,默认选择第一个try{MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_pDeviceList);
//这里默认选择了第一个相机      MyCamera.MV_CC_DEVICE_INFO device =(MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_pDeviceList.pDeviceInfo[0],typeof(MyCamera.MV_CC_DEVICE_INFO));int nRet = -1;// ch:打开设备 | en:Open deviceif (null == myCamera){myCamera = new MyCamera();if (null == myCamera){return -1;}}//创建设备nRet = myCamera.MV_CC_CreateDevice_NET(ref device);if (MyCamera.MV_OK != nRet){return -1;}//打开设备nRet = myCamera.MV_CC_OpenDevice_NET();if (MyCamera.MV_OK != nRet){myCamera.MV_CC_DestroyDevice_NET();//System.Windows.Forms.MessageBox.Show("open device Fail!");ShowErrorMsg("Device open fail!", nRet);return -1;}// 开始 grabingint temp = myCamera.MV_CC_StartGrabbing_NET();if (MyCamera.MV_OK != temp){ShowErrorMsg("Trigger Fail!", temp);return -1;}//获得显示句柄//int nRet2 = myCamera.MV_CC_Display_NET(handle);//if (MyCamera.MV_OK != temp)//{//    ShowErrorMsg("Display Fail!", nRet2);//    return -1;//}// 设置采集模式 -触发模式;触发源-软触发; 触发一次myCamera.MV_CC_SetEnumValue_NET("TriggerMode", (uint)MyCamera.MV_CAM_TRIGGER_MODE.MV_TRIGGER_MODE_ON);myCamera.MV_CC_SetEnumValue_NET("TriggerSource", (uint)MyCamera.MV_CAM_TRIGGER_SOURCE.MV_TRIGGER_SOURCE_SOFTWARE);return 0;}catch (Exception ex){MessageBox.Show(ex.Message);return -1;}}

3.触发拍照

 public int TakePhoto(){try{int nRet;// ch:触发命令 | en:Trigger command ,触发一次nRet = myCamera.MV_CC_SetCommandValue_NET("TriggerSoftware");if (MyCamera.MV_OK != nRet){ShowErrorMsg("Trigger Fail!", nRet);return -1;}return 0;}catch (Exception ex){MessageBox.Show(ex.Message);return -1;}}

4.取像、显示并转换传递出去

 public void ReceiveAndConvert(){MyCamera.MV_FRAME_OUT stFrameOut = new MyCamera.MV_FRAME_OUT();MyCamera.MV_DISPLAY_FRAME_INFO stDisplayInfo = new MyCamera.MV_DISPLAY_FRAME_INFO();//此处的延时很重要,不合适会有拖影,测试相机为6500w像素 其中曝光500ms最低800ms,int nRet = m_MyCamera.MV_CC_GetImageBuffer_NET(ref stFrameOut, 1000);if (nRet == MyCamera.MV_OK){//显示stDisplayInfo.hWnd = pictureBox1.Handle;stDisplayInfo.pData = stFrameOut.pBufAddr;stDisplayInfo.nDataLen = stFrameOut.stFrameInfo.nFrameLen;stDisplayInfo.nWidth = stFrameOut.stFrameInfo.nWidth;stDisplayInfo.nHeight = stFrameOut.stFrameInfo.nHeight;stDisplayInfo.enPixelType = stFrameOut.stFrameInfo.enPixelType;int nret = m_MyCamera.MV_CC_DisplayOneFrame_NET(ref stDisplayInfo);
//  displayif (nret != MyCamera.MV_OK){Console.WriteLine("display error!");break;}
//copy convert to byte[]byte[] data = new byte[stFrameOut.stFrameInfo.nFrameLen];Marshal.Copy(stFrameOut.pBufAddr, data, 0, (int)stFrameOut.stFrameInfo.nFrameLen);m_MyCamera.MV_CC_FreeImageBuffer_NET(ref stFrameOut);
//save//SavePic(stFrameOut.pBufAddr, stFrameOut.stFrameInfo, res, 1);//图像处理在此处进行byte[] bPara = new byte[100000];int detectres = -1;try{detectres = C++Dll.VisionMethod(data);}catch (Exception ex){MessageBox.Show(ex.Message);}}}}

5.finished

关于使用海康相机SDK采集图片并传递给C++的使用总结相关推荐

  1. C/C++实战——基于Qt框架和visual studio的海康相机SDK二次开发

    最近在进行机器视觉系统的搭建,积累了经验,想和大家讨论.互相学习.相机是图像的来源.为了搭建视觉系统,完成图像分析.机器视觉任务,需要编程控制相机按工作所需的曝光.增益和帧率同步采集和存储图像.工业相 ...

  2. 海康相机SDK+halcon17(64位)+MFC+VS(64位)联合开发遇到的问题(在使用GenImage3Extern将RGB数据转换为halcon图像时出现异常情况处理)

    这几天遇到了问题就是在MFC中开发SDK,遇到了问题是: 1.回调函数中的原始图像没数据,但是图像的信息是有的 这个问题的主要原因在于海康相机的默认输出数据的格式是 YUYV ,并不是RGB的,因此需 ...

  3. 海康相机-SDK二次开发(NVR)-多相机IPCamera连接采集-opencv图像格式转换

    主要功能: 海康SDK开发,通过连接NVR,实现连接NVR的2个相机同时采集(多线程),并进行opencv图像格式转换. 关键技术点: 1.回调函数 2.YV12->oepncv图像格式转换 3 ...

  4. 海康相机SDK二次开发的一些报错和解决办法

    1.MV_OK 0x00000000 成功,无错误 解析:-2147483648/0x80000000正常状态返回,执行成功 2.MV_E_HANDLE 0x80000000 错误或无效的句 解析:- ...

  5. ubuntu20.04超简单的安装海康相机与海康sdk调试问题

    海康相机安装与调试 1.安装海康相机 2.调试海康相机 3.例子调试 本人因为公司项目需要用海康相机,所以我最近也在琢磨,同时也遇到了一些小小的问题,解决问题后,我想到经常通过博客很方便的解决问题,少 ...

  6. 海康相机抓图+OPENCV格式转换问题

    使用的工业相机是海康威视的MV-CA032-10GC 1.不会转换格式先找demo 开发海康相机sdk联合opencv的时候,格式转换问题搞了整整一天,一开始不知道如何将抓图得到的数据转成opencv ...

  7. 海康工业相机SDK + OpenCV实例(4):相机参数设置详解

    海康工业相机SDK + OpenCV实例(4): 相机参数设置详解 文章目录 海康工业相机SDK + OpenCV实例(4): 相机参数设置详解 前言 一.相机参数基本接口 二.自动曝光时间调整亮度 ...

  8. 嵌入式linux 海康 sdk,海康相机开发(1) SDK安装和开发

    1.1 安装包获取 从官网下载最新版本的MVS安装包,支持Windows xp.Windows 7.Windows 8.Windows 10的32和64位系统.安装过程默认即可. 官网下载链接:htt ...

  9. 海康工业相机SDK + OpenCV实例(5):相机双线程读写缓存策略

    海康工业相机SDK + OpenCV实例(5): 相机双线程读写缓存策略 文章目录 海康工业相机SDK + OpenCV实例(5): 相机双线程读写缓存策略 前言 一.双线程 二.缓存区容量为2的生产 ...

最新文章

  1. 亿级PV超大型网站集群架构图形深度揭秘讲解
  2. 3分钟带你理解深度学习中的RNN和LSTM究竟是什么?
  3. php date strtotime的用法
  4. c#如何将一个整数转换二进制,并进行位运算
  5. 12 组合与继承、CSS Module
  6. 实时监控后台数据 vue_实时数据监控,快速掌握B站爆款视频热度走向
  7. 无法在Web服务器上启动调试。与Web服务器通信时出现身份验证错误
  8. linux timespec 链接库,Linux内核 timespec_sub()
  9. ExoPlayer的缓存 四 缓存Cache 的应用
  10. Matlab模拟布朗运动
  11. java ee 结构图,javaee体系结构图
  12. light动名词_动名词
  13. 13-zinx-Golang-MMO游戏Proto3协议
  14. python读取csv文件表头_python读csv文件时指定行为表头或无表头的方法
  15. flutter引入高德地图_flutter配置高德地图SDK
  16. CentOS/Deepin遇到Qt系列问题的解决方案(例如error: cannot find -lGL和搜狗输入法无效等)
  17. 新娘JAVA_java新郎新娘结婚的问题
  18. thinkphp5阿里云SDK短信验证
  19. [论文学习笔记]01一种轮廓平行扫描算法【3D打印路径规划】
  20. CoffeeScript系列教程(一)—概述

热门文章

  1. google map 加点
  2. Salesforce CRM系统排名?Salesforce CRM办公系统怎么选?什么是用户口碑最好的Salesforce CRM系统?
  3. mysql5.7 源码调试,用VS2015 Debug MySQL5.7源码
  4. html5游戏开发-弹幕+仿雷电小游戏demo
  5. 标记组的应用示例(重叠)_标靶图
  6. Hive基础知识(三)--分桶表
  7. 2020ICPC·小米 网络选拔赛第一场 D.Router Mesh
  8. VC倒下了我们还有其他MOD---天使驴快速使用指南
  9. 【笔记】Hadoop + zookeeper + hbase 集群搭建 简洁版
  10. 二维数组练习原创五子连珠