You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
smokeboxidentification/src/CameraControl.h

86 lines
2.3 KiB
C++

#ifndef CAMERA_CONTROL_H
#define CAMERA_CONTROL_H
#include <QMap>
#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<CameraControl>
{
Q_OBJECT
public:
explicit CameraControl();
~CameraControl();
//static void EnumCameras(QList<CameraInfo>& cameraInfoList);
bool readCameraConfig(QString filePath);
bool initCamera();
bool loadCamera(const QList<CameraInfo>& 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<ImageInfo>& 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<int, CameraInfo> m_mapIdCameraInfoTop;
QMap<int, CameraInfo> m_mapIdCameraInfoSide;
QMap<QString, int> m_mapSerialNumberIdTop;
QMap<QString, int> m_mapSerialNumberIdSide;
QVector<Camera*> m_vecPCamera;
QMap<QString, int> m_mapSNIndex;
bool m_bCamerasInit{ false };
eCameraLocation m_eCameraLocation;
QThread* m_pobjThread;
QMutex m_mutex;
};
#endif // !CAMERA_CONTROL_H