海康威视工业相机MV-CE060-10UC使用指北

海康威视工业面阵相机MV-CE060-10UC非UVC设备,欲使用该工业相机进行二次开发,需使用MVS机器视觉工业相机客户端。本文以x86架构下Linux系统为例,具体操作系统为Ubuntu 20.04,介绍该工业相机的使用方法。

设备参数简介

海康威视工业面阵相机MV-CE060-10UC的具体性能参数如下:

条目
传感器类型 CMOS,卷帘快门
传感器型号 IMX178
像元尺寸 2.4 µm×2.4 µm
靶面尺寸 1/1.8"
分辨率 3072×2048
最大帧率 42.7 fps@3072×2048
动态范围 71.3 dB
信噪比 41.3 dB
增益 0 dB ~20 dB
曝光时间 24 μs ~ 1 sec
快门模式 支持自动曝光、手动曝光、一键曝光以及 Global Reset
黑白/彩色 彩色
像素格式 Mono 8/10/12 Bayer RG 8/10/10p/12/12p YUV422Packed,YUV422_YUYV_Packed RGB 8,BGR 8
Binning 支持 1×1,2×2
下采样 不支持
镜像 支持水平镜像

资料下载

技术资料下载

工业相机MVS下载(本文使用MVS V2.1.1 Linux为例)

MVS安装

将MVS_STD_GML_V2.1.1_211224.zip下载到本机,将其解压可得到aarch64, armhf, i386, x86_64等不同架构下的安装包,本文选择x86_64 deb包,使用dpkg安装。如使用aarch环境,则使用 MVS-2.1.1_aarch64_20211224.deb 这个包

$ unzip MVS_STD_GML_V2.1.1_211224.zip
$ sudo dpkg -i MVS-2.1.1_x86_64_20211224.deb

等待安装完毕,默认情况下该软件安装到 /opt/MVS/

使用以下命令打开MVS应用程序

$ /opt/MVS/bin/MVS.sh
# 若出现无法打开的问题,尝试切换到 /opt/MVS/bin/ 目录下重试
$ cd /opt/MVS/bin/
$ ./MVS.sh

通常情况下,MVS应用程序供初次使用该相机时调试相机参数使用,例如曝光时间,增益参数等,这样在二次开发时无需重新设置参数。但是请注意,设置好的参数在相机断电后不会保存,所以应及时保存用户设置,如需下次上电后自动选择之前的参数,应在MVS应用程序中做设置。

代码指北

本文介绍如何从MV工业相机中采集图像,转换到OpenCV(本文以3.4.5为例) cv::Mat图像格式,便于进一步开发。

在进行编程之前,应在编译规则中加入(以CMake为例):

include_directories(/opt/MVS/include/)
link_directories(/opt/MVS/lib/64/)
# 若在 aarch 架构下使用,请使用 link_directories(/opt/MVS/lib/aarch64/)
target_link_libraries(${PROJECT_NAME}
MvCameraControl)
# 由于使用了OpenCV,也应加入:
find_package(OpenCV 3 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
MV工业相机的使用遵循以下流程:

枚举设备 => 选择设备并创建句柄 => 打开设备 => 注册抓图回调 => 开始取流 => (回调函数逻辑)=> 停止取流 => 关闭设备 => 销毁句柄

在MVS安装好后,将能够调用摄像头相关的API,常用API如下:

// 头文件
#include "MvCameraControl.h"
#include "opencv2/core.hpp"int deviceIndex = 0;
void *handle = nullptr;
MV_CC_DEVICE_INFO_LIST stDeviceList;
MVCC_INTVALUE stParam;
unsigned char *pData;
cv::Mat curFrame;// 回调函数
void __stdcall ImageCallBackExForBGR8(unsigned char *pData, MV_FRAME_OUT_INFO_EX *pFrameInfo, void *pUser) {curCamera->curFrame = cv::Mat(pFrameInfo->nHeight, pFrameInfo->nWidth, CV_8UC3, pData);
}// 枚举设备
memset(&stDeviceList, 0, sizeof(MV_CC_DEVICE_INFO_LIST));
MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, &stDeviceList);if (stDeviceList.nDeviceNum > 0) {for (int i = 0; i < stDeviceList.nDeviceNum; ++i) {printf("[device %d]:\n", i);MV_CC_DEVICE_INFO *pDeviceInfo = stDeviceList.pDeviceInfo[i];}} else {printf("Find No Devices!\n");}// 选择设备并创建句柄
MV_CC_CreateHandle(&handle, stDeviceList.pDeviceInfo[deviceIndex]);// 打开设备
MV_CC_OpenDevice(handle);// 注册抓图回调
MV_CC_RegisterImageCallBackForBGR(handle, ImageCallBackExForBGR8, handle);// 开始取流
MV_CC_StartGrabbing(handle);
MV_FRAME_OUT_INFO_EX stImageInfo = {0};
memset(&stImageInfo, 0, sizeof(MV_FRAME_OUT_INFO_EX));
pData = (unsigned char *)malloc(sizeof(unsigned char) * stParam.nCurValue);// 停止取流
MV_CC_StopGrabbing(handle);// 关闭设备
MV_CC_CloseDevice(handle);// 销毁句柄
MV_CC_DestroyHandle(handle);

详细使用方法已上传到Gitee,并且已封装好。参见https://gitee.com/shenhaoyuan/hikrobot-mvcamera


作者:Hoyin

最后编辑时间:2022/2/21

联系作者:work_hoyin@163.com

海康威视工业相机MV-CE060-10UC使用指北相关推荐

  1. python scatter 简书_写给 Pythonist 的 Spacemacs 入门指北

    前言 最开始,使用 Sublime Text 编码,后来用 Vim 混合 PyCharm 写 Python. 前几天,Github 上的 Spacemacs 已经成功的突破一万 Star, 听说几个我 ...

  2. Ubuntu20.04基本配置指北——让Ubuntu成为可办公系统

    Ubuntu基本配置指北 本教程基于Ubuntu20.04版本进行配置,其余版本可能存在少许不同. wifi驱动 由于我的笔记本是Thinkpad,所以在去年安装Ubuntu20.01时会存在没有wi ...

  3. Laravel 集成 JPush 极光推送指北

    2019独角兽企业重金招聘Python工程师标准>>> 我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就 ...

  4. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

  5. 怎么用class引入svg_【蓝湖指北】走向设计巅峰,从蓝湖 Sketch 插件开始,用它!...

    用好蓝湖,提升团队协作效率,蓝湖指北,教你如何用好蓝湖.本期[蓝湖指北]如约而至- Sketch 作为一款轻量级的矢量设计工具,凭借其强大的界面设计功能,被大多数 UI 设计师所使用,日渐成为产品研发 ...

  6. 蓝湖怎么切图标注_【蓝湖指北】一张图教你如何选择标注尺寸

    蓝湖的标注.切图功能广受好评,正确选择标注尺寸,让设计师与工程师的沟通和协作事半功倍.本期[蓝湖指北],湖湖将手把手教你如何选择标注尺寸. Step 1 :将设计图上传至蓝湖 上传设计图至蓝湖,单击设 ...

  7. 蓝湖怎么切图标注_【蓝湖指北】你真的会切图吗?

    ​​用好蓝湖,提升团队协作效率, 蓝湖指北,教你如何用好蓝湖. 本期[蓝湖指北]如约而至- 应付奇葩需求.交付设计图,乃设计师职业生涯中的两大难题.对 UI 设计师而言,交付设计图绝不只是打包.发送设 ...

  8. php集成jpush教程,Laravel 集成 JPush 极光推送指北

    我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就不用看了). Laravel 使用 Composer 来管理代码依赖.所以 ...

  9. 微信小程序云开发不完全指北

    微信小程序云开发不完全指北 首先必须说明云开发的"云"并不是类似云玩家里的云的意思,而是微信小程序真的提供了云开发的接口以及一个简单的提供存储.数据库服务的虚拟后台(对于一些轻量小 ...

最新文章

  1. Web API 接口-JavaScript全部api接口文档
  2. 在TMG2010中发布Web服务器场
  3. spring 声明式事务
  4. 贝佐斯明抢马斯克太空生意:数十亿美元组卫星互联网,5年内发射3236颗卫星...
  5. 提高篇 第三部分 图论 第4章 差分约束系统
  6. python 单链表节点怎么快速定义_线性表链式存储结构之单链表
  7. Keras中文文档:图像预处理ImageDataGenerator 类详细学习记录
  8. Datawhale 零基础入门数据挖掘-Task4 建模调参
  9. JQuery 表格拖动调整列宽效果
  10. RichTextBox 中英文混输时,字体样式不同的解决方式
  11. JS Bin 在线编辑代码,所见所得
  12. 本来都对象棋失去兴趣了, 是特殊的原因让我又开始从侧面搞象棋方面的擦边的游戏...
  13. Android网络验证逆向,【Android逆向】去除无聊的网络验证弹窗与360加固
  14. csgo控制台所有代码飞天_CSGO控制台指令汇总
  15. evernote 有道_如何备份Evernote笔记本(以防万一)
  16. Python操作MyS QL
  17. 计算机组成原理第二版第6章ppt,计算机组成原理第6章简.ppt
  18. 冒泡排序算法,简单明了哦。
  19. css button三角形,CSS实现三角形的播放器按钮图标
  20. web程序无法访问:The requested resource () is not available.错误

热门文章

  1. Android: 实测安卓10下无法获取MEID的解决办法(附smali代码)_20200928_七侠镇莫尛貝
  2. 教你一招避开网盘限速(百度网盘下载助手)
  3. 用java构造圆类_JAVA实验报告(圆类.doc
  4. 【Python】_1.Python基础语法
  5. 教你如何更改在洛谷里的运势
  6. Java根据ip地址获取归属地
  7. 关于解决错误apt --fix-broken install
  8. WebCollector初学教程
  9. CentOS7 安装rar压缩软件
  10. 【Unity2d】带你制作一款类似于金山打字的小游戏