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/HikCamera.h

55 lines
1.8 KiB
C++

#ifndef HIK_CAMER_CONTROL_H
#define HIK_CAMER_CONTROL_H
#include "camera.h"
#include "MvCameraControl.h"
#include "commonDefine.h"
class HikCamera : public Camera
{
Q_OBJECT
public:
enum HikCameraProperty {
Width, // 图片宽度
Height, // 图片高度
ExposureTime, // 曝光时间
Brightness, // 亮度
FrameRate, // 帧率
Gain, // 增益
PixelFormat, // 像素格式
TriggerMode // 触发模式
};
~HikCamera();
//void initCamera(const void* pDeviceInfo);
virtual bool initCamera(const QString& serialNumber) override;
virtual void destroyCamera() override;
virtual bool openCamera() override;
virtual bool closeCamera() override;
virtual bool startCamera() override;
virtual bool stopCamera() override;
virtual bool takeAPic(cv::Mat& imgMat, cv::Mat&imgMat3D) override;
virtual bool setTriggerSource(int mode) override;
virtual bool setExposure(int exposure) override;
virtual bool setGain(double gain) override;
static int EnumDevices(unsigned int nTLayerType, MV_CC_DEVICE_INFO_LIST* pstDevList);
//QString getCameraProperty(HikCamera::HikCameraProperty type); // 获取相机参数
CameraType getCameraType() { return m_type; }
private:
void RGB2BGR(unsigned char* pRgbData, unsigned int nWidth, unsigned int nHeight);
bool Convert2Mat(MV_FRAME_OUT_INFO_EX* pstImageInfo, unsigned char * pData, cv::Mat& imageMat);
bool setCameraProperty(HikCamera::HikCameraProperty type, double value = 0.0); // 设置相机参数
CameraType m_type = CameraType::Hik;
void *m_pDevHandle;
unsigned char *m_pData;
unsigned int m_size;
MV_FRAME_OUT_INFO_EX m_frame_info;
MV_CC_DEVICE_INFO *m_pDeviceInfo;
};
#endif // HIK_CAMER_CONTROL_H