#ifndef CAMERA_CONTROL_H #define CAMERA_CONTROL_H #include #include "HikCamera.h" #include "commonDefine.h" struct CameraInfo { CameraType cameraType; //相机类型 QString cameraLabel; //显示的序列号 QString userDefinedName; //用户设置的名字 QString modelName; //相机设备名称(厂家) QString serialNumber; //相机设备序列号(厂家) double exposure; //曝光时间 int imageWidth; //宽度 int imageHeight; //高度 int rotationAngle{ 0 }; //旋轉角度 QString saveImgSuffix = ".bmp" ; //保存的图像格式 }; struct FileInfo { QString strId; QString suffix; QString name; }; struct ImageInfo { cv::Mat image; QString cameraSn; FileInfo saveImgInfo; }; class CameraControl : public QObject, public lp_singleton { Q_OBJECT public: explicit CameraControl(); ~CameraControl(); //static void EnumCameras(QList& cameraInfoList); bool readCameraConfig(QString filePath); bool initCamera(); bool loadCamera(const QList& cameraInfoList); bool openCamera(const QStringList& serialNumberList); bool closeCamera(const QStringList& serialNumberList); bool startCamera(const QStringList& serialNumberList); bool stopCamera(const QStringList& serialNumberList); bool setSoftwareTrigger(const QStringList& serialNumberList); bool openCamera(const QString& serialNumber); bool closeCamera(const QString& serialNumber); bool startCamera(const QString& serialNumber); bool stopCamera(const QString& serialNumber); bool setSoftwareTrigger(const QString& serialNumber); Q_SLOT void onCapture(int cameraLocation); signals: void sgCapturedImage(const QVector& vecImageInfo, int cameraLocation); private: Q_SLOT void onOpen(); bool getSaveImgNameInfo(QString serialNumber, FileInfo& fileInfo); void capture(const QStringList& serialNumberList); cv::Mat capture(const QString& serialNumber); void flipImg(const cv::Mat& imgSrc, cv::Mat& imgDst, int rotationAngle); QMap m_mapIdCameraInfoTop; QMap m_mapIdCameraInfoSide; QMap m_mapSerialNumberIdTop; QMap m_mapSerialNumberIdSide; QVector m_vecPCamera; QMap m_mapSNIndex; bool m_bCamerasInit{ false }; eCameraLocation m_eCameraLocation; QThread* m_pobjThread; QMutex m_mutex; }; #endif // !CAMERA_CONTROL_H