#pragma once #include "cvx_camera_global.h" #include #include #include #ifdef USE_OPENCV #include "opencv2/opencv.hpp" #endif // USE_OPENCV #ifdef USE_HALCON #include #endif // USE_HALCON namespace cv { class Mat; } namespace HalconCpp { class HObject; } enum E_CameraType { TYPE_HK = 0, TYPE_DAHENG = 1, TYPE_BASLER, TYPE_SIMULATE }; class CVX_EXPORT CvxCamera { public: virtual ~CvxCamera(){} enum E_PIXEL_TYPE { PIXEL_TYPE_GVSP_MONO8, PIXEL_TYPE_GVSP_RGB8 }; enum E_TRIGGER_MODE { TRIGGER_MODE_OFF = 0, TRIGGER_MODE_ON, }; enum E_TRIGGER_SOURCE { TRIGGER_SOURCE_SOFT = 0, TRIGGER_SOURCE_LINE0, TRIGGER_SOURCE_LINE2, TRIGGER_SOURCE_LINE3, TRIGGER_SOURCE_Anyway, }; static std::shared_ptr createInstance(E_CameraType type); virtual int64_t enumDevicesSN(std::vector& sn) = 0; virtual int64_t openCamera(const char* camSN) = 0; virtual int64_t setInitParameters() = 0; virtual std::string getCameraSN() = 0; virtual int64_t getCameraImageSize(int64_t &size) = 0; virtual int64_t getCameraImageWidth(int64_t& width) = 0; virtual int64_t getCameraImageHeigth(int64_t& height) = 0; #ifdef USE_OPENCV virtual int64_t getOneImage(cv::Mat& img) = 0; virtual int64_t takeSingleImage(cv::Mat& img) = 0;//软触发并取一次图 #endif #ifdef USE_HALCON virtual int64_t getOneImage(HalconCpp::HObject& img) = 0; virtual int64_t takeSingleImage(HalconCpp::HObject& img) = 0;//软触发并取一次图 #endif // USE_HALCON virtual int64_t closeCamera() = 0 ; virtual int64_t reConnectCamera() = 0; virtual int64_t clearCameraBuf() = 0; virtual int64_t startGrabbing() = 0; virtual int64_t stopGrabbing() = 0; virtual int64_t softTriggerOnce() = 0;//软触发一次 virtual int64_t setPixelType(E_PIXEL_TYPE type) = 0; //设置图像格式 virtual int64_t setTriggerMode(E_TRIGGER_MODE mode) = 0; //设置触发模式 virtual int64_t setTriggerSource(E_TRIGGER_SOURCE source) = 0; //设置触发源 virtual float getExposureTime() = 0;//获取设备当前曝光时间 virtual int64_t setExposureTime(float expTime) = 0;//设置曝光 virtual int64_t setTriggerDelay(int delay) = 0; //设置触发延时 virtual int64_t setGain(float gainValue) = 0; //设置增益 virtual float getGain() = 0;//获取增益 enum { IMAGESIZE_DEFAULT_WIDTH = 2590, IMAGESIZE_DEFAULT_HEIGHT = 1944, }; enum { SUCCESS = 0, ACTION_FAILED_UNDO = -100001, GAMERA_UNKOWN_CONTROLLER = -98000, GAMERA_FAILED_NODEVICE, GAMERA_FAILED_ALLOCATE, GAMERA_FAILED_OVERCONNECT, GAMERA_FAILED_TOCONNECT, GAMERA_FAILED_UNCONNECTED, GAMERA_FAILED_SETEXPOSURE, GAMERA_FAILED_INACTION, GAMERA_FAILED_TIMEOUTEXEC, GAMERA_FAILED_NOIMAGEACC, GAMERA_FAILED_IMAGEBUFLEN, GAMERA_FAILED_STDEXCEPTION, GAMERA_FAILED_UNKNOWNEXCEPTION, GAMERA_FAILED_GETIMAGE, ERROR_UNDEFINE }; protected: CvxCamera(){} };