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

99 lines
2.9 KiB
C

#ifndef CAMERA_CONTROL_H
#define CAMERA_CONTROL_H
#include <QMap>
#include "HikCamera.h"
#include "LXCamera.h"
#include "commonDefine.h"
struct CameraInfo
{
CameraType cameraType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString cameraLabel; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
QString userDefinedName; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
QString modelName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD>ң<EFBFBD>
QString serialNumber; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD>кţ<D0BA><C5A3><EFBFBD><EFBFBD>ң<EFBFBD>
double exposure; //<2F>ع<EFBFBD>ʱ<EFBFBD><CAB1>
int imageWidth; //<2F><><EFBFBD><EFBFBD>
int imageHeight; //<2F>߶<EFBFBD>
int rotationAngle{ 0 }; //<2F><><EFBFBD>D<EFBFBD>Ƕ<EFBFBD>
int location = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װλ<D7B0><CEBB>(<28><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ڶѶ<DAB6><D1B6><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>), 1<><31>2<EFBFBD><32>, 0<><30><EFBFBD><EFBFBD>Ϊ֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD>
QString calibFile = ""; //<2F><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ַ
QString saveImgSuffix = ".bmp" ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʽ
};
struct FileInfo
{
QString strId;
QString suffix;
QString name;
};
struct ImageInfo
{
bool bIs2D;
cv::Mat image;
cv::Mat image3D;
ILImagePtr imageOrigin;
ILImagePtr imageFixed;
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);
bool setExposure(const QString& serialNumber,int exposure);
int getDeviceId(const QString& serialNumber);
2 years ago
Q_SLOT void onCapture(int cameraLocation,int location, int floor);
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, int location, int floor);
2 years ago
bool capture(const QString& serialNumber, cv::Mat& img, cv::Mat& img3D,int exposure);
void flipImg(const cv::Mat& imgSrc, cv::Mat& imgDst, int rotationAngle);
QMap<int, CameraInfo> m_mapIdCameraInfoTop;
QMap<int, int> exposureRowMap;
QMap<int, CameraInfo> m_mapIdCameraInfoSide;
QMap<QString, int> m_mapSerialNumberIdTop;
QMap<QString, int> m_mapSerialNumberIdSide; // QString:<3A><><EFBFBD><EFBFBD>SN<53>룬int:<3A><><EFBFBD><EFBFBD>ID
QMap<QString, int> m_cameraStockLocation; // QString:<3A><><EFBFBD><EFBFBD>SN<53><4E>, int:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>Location
QVector<Camera*> m_vecPCamera;
QMap<QString, int> m_mapSNIndex;
bool m_bCamerasInit{ false };
eCameraLocation m_eCameraLocation;
QThread* m_pobjThread;
QMutex m_mutex;
ILCalibNPointsPtr m_calib1, m_calib2;
};
#endif // !CAMERA_CONTROL_H