海康威视工业相机MV

您所在的位置:网站首页 海康威视工业相机软件好用吗 海康威视工业相机MV

海康威视工业相机MV

#海康威视工业相机MV| 来源: 网络整理| 查看: 265

海康威视工业相机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 8Binning支持 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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3