|
|
|
|
|
#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);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
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
|