海康威视工业相机SDK二次开发
好气,第一次写文章,结果没不小心保存关掉,什么都没了。
本人是一名在读研究生,被导师分配了做项目中海康工业相机的二次开发。实现的需求是:实现八个相机同时打开视频,并且分相机采图保存到各自的文件夹中。由于网上关于海康SDK的二次开发内容较少,对新手较不友好,自己也磕磕绊绊做了一段时间,现回过头来做个小总结。这里主要写的是如何迈出二次开发的第一步。
一个踩过的小误区
一开始找了一篇关于海康威视sdk与海康威视web的史上最精细的教程 (一),对着一通猛弄了好几天,还纠结为什么工业相机找不到密码。做笔记,要区分网络设备SDK和工业相机SDK---->
设备网络SDK的描述如下:
概述
设备网络SDK是基于设备私有网络通信协议开发的,为嵌入式网络硬盘录像机、NVR、网络摄像机、网络球机、视频服务器、解码器、报警主机、网络存储等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。
工业相机SDK的描述如下:
概述
工业相机SDK是用于控制相机的一个独立组件,支持获取实时图像数据、配置参数、对图像进行后续处理等功能。工业相机SDK兼容GigE Vision协议、USB3 Vision协议、Camera Link协议、CoaXPress协议,目前支持Windows、Linux、Mac以及Android系统,不同的操作系统下需要加载使用配套的SDK版本并参考相应SDK开发指南。SDK对相机的控制上,最基本的功能有参数设置和图像获取两部分。
需要 强调的是,工业相机是没有密码的,除非有IP冲突,否则是随连随用的。
工业相机二次开发的Demo示例
要想使用工业相机的SDK,需要先下载海康的MVS软件–官方下载地址,根据你的操作系统机器选择下载视觉工业相机客户端MVS。二次开发的Demo示例在软件目录下的MVS\Development\Samples中,打开如图:
根据你开发所用的语言环境不同选择对应的文件夹,这里我用到的是C++语言,开发软件是VS2015,所以选择VC文件夹,里面的demo示例程序如下:
根据我的需求,我只用到了红框所示的两个程序,但是这里能实现的功能还是很完善的
二次开发用到的一些文件
必须要用到lib文件MvCameraControl.lib,该文件存在MVS目录MVS\Development\Libraries中,根据你的系统位数选择相应的lib文件,连接方法:
选中项目名称右键——属性——连接器——常规——附加库目录——这里是lib文件所在的路径
选中项目名称右键——属性——连接器——输入——附加依赖性——这里是lib文件的名称MvCameraControl.lib。
还需要用到MvCamera.cpp和MvCamera.h,这两个直接导入到工程中,在工程的头文件引用MvCamera.h即可。
此外我还用到了一个MultipleCameraDefine.h头文件,存放的是一些常用的宏定义,根据需求修改即可。
自己做的小demo
本文只是起到引路的作用,所以具体的代码就不放了,下面是自己结合示例Demo做的小界面。
实现了打开8台相机,修改相机参数,存图为bmp格式保存到各自的文件夹,循环采图等。
遇到一个小Bug是如果相机在demo使用过程中拔掉,即使关闭相机再初始化,也会在设置触发模式那里中断程序,这个bug暂时还没解决,欢迎各位大佬来交流意见。