海康工业相机SDK + OpenCV实例(3):相机初始化Bug调试
海康工业相机SDK + OpenCV实例(3):
相机初始化Bug调试
文章目录
- 海康工业相机SDK + OpenCV实例(3):
- 相机初始化Bug调试
- 前言
- 一、心跳时间设置
- 二、相机先关闭再打开
前言
前文海康工业相机SDK+OpenCV实例(2):RawDataFormatConvert详解中,以RawDataFormatConvert为例,讲解了海康工业相机的基本操作与转为Mat格式的操作。但是在实际应用中,相机开关初始化遇到了种种不便利的情况。
(1)调试时期,相机默认的心跳时间为60s,导致重启周期很长。
(2)当相机已经打开或者连接,再次访问,导致开机报错。
基于上述可能存在的问题,本文进行调试。
一、心跳时间设置
相机在调试过程,在程序中,若相机已经开机,如果在程序异常退出前相机没有进行相应的关机操作,会导致一段时间内相机无法连接,这个时间就叫心跳时间。海康相机默认的心跳时间为60s,这意味着如果程序异常跳出,海康相机60s内不能重新进行连接,这会给相机的调试带来困扰。
海康工业相机SDK提供了心跳时间HeartBeatTimeout设置的接口MV_CC_SetHeartBeatTimeout,可以在相机开机后加入下述程序段,设置心跳时间为3s(心跳时间的最小值为500ms)。
int HeartBeatTimeout = 3000;nRet = MV_CC_SetHeartBeatTimeout(handle, HeartBeatTimeout);if (MV_OK != nRet){printf("Set HeartBeatTimeout fail! nRet [0x%x]\n", nRet);}
尽管重新设置了心跳时间,但也不排除在极短的心跳时间内,程序需要重新启动。我们可以通过一个判断设备是否可达的接口MV_CC_IsDeviceAccessible,倘若当前相机仍然处于心跳时间内,程序会自动等待心跳时间。
nRet = MV_CC_IsDeviceAccessible(stDeviceList.pDeviceInfo[nIndex], MV_ACCESS_Exclusive);if (nRet == 0) Sleep(3000);
MV_ACCESS_Exclusive是一种相机访问模式,具体种类可详见于SDK。
二、相机先关闭再打开
当相机已经在服务端被打开,客户端初次连接后,倘若客户端异常跳出,没有下达相机关闭指令,当客户端再次尝试连接相机时,由于相机已经打开,会有相机开机异常的报错。
因此,我们可以尝试在每次连接相机之前,先调用判断相机连接状态的接口MV_CC_IsDeviceConnected,倘若相机已经连接,尝试先关闭再打开相机;倘若,相机没有连接,直接打开相机。
//判断设备是否已经连接,如果已经连接,尝试先关闭相机nRet = MV_CC_IsDeviceConnected(handle);if (nRet == 1){nRet = MV_CC_CloseDevice(handle);if (MV_OK != nRet){printf("ClosDevice fail! nRet [0x%x]\n", nRet);}}//创建句柄,打开设备nRet = MV_CC_CreateHandle(&handle, stDeviceList.pDeviceInfo[nIndex]);if (MV_OK != nRet){printf("Create Handle fail! nRet [0x%x]\n", nRet);}nRet = MV_CC_OpenDevice(handle);if (MV_OK != nRet){printf("Open Device fail! nRet [0x%x]\n", nRet);}
海康工业相机SDK + OpenCV实例(3):相机初始化Bug调试相关推荐
- 海康工业相机SDK + OpenCV实例(4):相机参数设置详解
海康工业相机SDK + OpenCV实例(4): 相机参数设置详解 文章目录 海康工业相机SDK + OpenCV实例(4): 相机参数设置详解 前言 一.相机参数基本接口 二.自动曝光时间调整亮度 ...
- 海康工业相机SDK + OpenCV实例(5):相机双线程读写缓存策略
海康工业相机SDK + OpenCV实例(5): 相机双线程读写缓存策略 文章目录 海康工业相机SDK + OpenCV实例(5): 相机双线程读写缓存策略 前言 一.双线程 二.缓存区容量为2的生产 ...
- 海康工业相机SDK+OpenCV实例(2):RawDataFormatConvert详解
海康工业相机SDK+OpenCV实例(2): RawDataFormatConvert详解 文章目录 海康工业相机SDK+OpenCV实例(2): RawDataFormatConvert详解 前言 ...
- 海康工业相机SDK+OpenCV实例(1):海康SDK和OPENCV的安装与编译
海康工业相机SDK+OpenCV实例(1) 海康SDK和OPENCV的安装与编译 文章目录 海康工业相机SDK+OpenCV实例(1) 海康SDK和OPENCV的安装与编译 前言 一.海康SDK安装 ...
- (一)Qt+OpenCV调用海康工业相机SDK示例开发
系列文章目录 提示:这里是该系列文章的所有文章的目录 第一章: (一)Qt+OpenCV调用海康工业相机SDK示例开发 第二章: (二)Qt多线程实现海康工业相机图像实时采集 文章目录 系列文章目录 ...
- python调用海康工业相机并用opencv显示(整体实现)
python语言调用海康机器人(hikrobotics)工业相机 系列文章目录 第一章 python调用海康工业相机并用opencv显示(整体实现) 第二章 python 调用海康工业相机图像获取方式 ...
- Java_JDK19.0.2_Ubuntu18.04中配合海康工业相机SDK环境搭建
Java_JDK19.0.2_Ubuntu18.04中配合海康工业相机SDK环境搭建 简介 1. JDK环境搭建 JDK下载 JDK环境安装 2. 工业相机环境SDK安装 简介 本文主要介绍在ubun ...
- 海康工业相机排雷笔记04-工业相机取图流程
在刚开始使用工业相机时,大多数人(包括我)可能都会误认为工业相机二次开发中的取图过程就是把图像数据从相机内部的寄存器中拿到内存中,这也会对取图过程及耗时等方面产生很多误解,下面会简单叙述下我个人的理解 ...
- 海康工业相机SDK错误码常见场景解析
在使用SDK二次开发过程中,接口的调用往往会遇到较多的错误,sdk错误码能够帮助我们快速分析错误原因,解决问题,针对常见的错误码,下面给出一下常见的问题原因,供大家分析 1.MV_OK 0x00000 ...
最新文章
- 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用
- 纪念-今天DNN密码破解
- 1.7 matlab矩阵元素的引用(可通过下标和序号引用)
- 阿里首席架构师科普RPC框架是什么
- 集芯片的焊接技巧:从LQFP64说起
- @Cacheable 指定缓存位置
- Proxmark3教程1:小白如何用PM3破解复制M1全加密门禁IC卡
- 远程服务异常处理的实践之一:客户端
- 云擎供应链:为中小仓库提供SaaS供应链解决方案
- envi反演水质参数_基于大气校正法的Landsat 8 TIRS地表温度反演
- 如何实现Iframe透明
- PHP 大地坐标系转高德经纬度
- Two Cylinders (辛普森公式处理积分)
- 安徽师大附中%你赛day2T3 巧克力 解题报告
- 统计学基础专栏04---回归和预测
- 批处理应用:IE问题修复
- creo管道设计教程_Pro/E Pro/PIPING 管道设计教程|就上UG网
- 利润中心的设置与组织架构 绩效考核 财务核算
- 【国产HMI引擎】一篇文章带你了解ssRender引擎
- 国开计算机应用基础中考答案,国开电大 计算机应用基础(本) 形考一答案