使用迈德威视相机的SDK API与相机进行交互,涵盖了从基本的相机控制到高级功能的各个方面。通过设置适当的回调函数,可以有效地处理相机状态变化和图像数据。这样的封装使得相机控制更为直接和易于管理
类定义:MWCamera
这个类继承自Camera基类,并添加了用于控制麦德威视相机的特定成员和方法。关键成员变量包括:
m_handle: 用于持有与相机设备的连接句柄。
m_isOpen 和 m_isGrabbing: 分别用于指示相机是否已打开和是否正在抓取图像。
构造函数与析构函数
构造函数(MWCamera): 初始化相机,设备句柄和图像数据置为nullptr,状态变量初始化。
析构函数(~MWCamera): 调用关闭相机函数,清理图像数据。
相机操作
openCamera(): 打开相机。首先枚举所有连接的设备,匹配设备序列号,并创建设备句柄。之后设置相机输出格式和参数,如触发模式等。
closeCamera(): 关闭相机。停止图像抓取,并销毁设备句柄。
参数设置
setCameraParameters(): 这个方法的具体实现未展示,通常用于设置相机的曝光时间、增益等参数。
图像捕获
startGrabbing(): 开始图像捕获。检查相机是否已经打开,若已打开且未处于捕获状态,则开始捕获。
stopGrabbing(): 停止图像捕获。如果相机处于捕获状态,则停止捕获。
回调函数
GrabImageCallback: 静态函数,用于处理从相机接收到的图像数据。该函数处理原始数据,转换成所需格式,并添加到图像数据缓存中。
missCallBack: 监听相机连接状态的变化,例如网络通讯失败或相机掉电等。
实用函数
executeSoftTrigger(): 执行软触发,通常用于外部触发模式下手动触发相机捕获图像。
sendErrorsMsgs(), sendInforMsgs(), sendWarningMsgs(): 发送错误、信息和警告消息。
#include "./inc/camera/mvcamera/mwcamera.h"
#include "./inc/storage/image/mimgdata.h"
#include<QDebug>
#include <QSettings>
#include <QTextCodec>
#include "globadebug.h"
// 构造函数:初始化摄像头实例的基本参数MWCamera::MWCamera(const int index, const QString&ip):Camera(index, ip),m_isOpen(false), m_isGrabbing(false),m_handle(nullptr){ // 通过构造函数初始化基类和摄像头的状态}
// 析构函数:确保在对