cvxcamera.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #pragma once
  2. #include "cvx_camera_global.h"
  3. #include <stdint.h>
  4. #include <string>
  5. #include <vector>
  6. #ifdef USE_OPENCV
  7. #include "opencv2/opencv.hpp"
  8. #endif // USE_OPENCV
  9. #ifdef USE_HALCON
  10. #include <HalconCpp.h>
  11. #endif // USE_HALCON
  12. namespace cv
  13. {
  14. class Mat;
  15. }
  16. namespace HalconCpp
  17. {
  18. class HObject;
  19. }
  20. enum E_CameraType
  21. {
  22. TYPE_HK = 0,
  23. TYPE_DAHENG = 1,
  24. TYPE_BASLER,
  25. TYPE_SIMULATE
  26. };
  27. class CVX_EXPORT CvxCamera
  28. {
  29. public:
  30. virtual ~CvxCamera(){}
  31. enum E_PIXEL_TYPE
  32. {
  33. PIXEL_TYPE_GVSP_MONO8,
  34. PIXEL_TYPE_GVSP_RGB8
  35. };
  36. enum E_TRIGGER_MODE
  37. {
  38. TRIGGER_MODE_OFF = 0,
  39. TRIGGER_MODE_ON,
  40. };
  41. enum E_TRIGGER_SOURCE
  42. {
  43. TRIGGER_SOURCE_SOFT = 0,
  44. TRIGGER_SOURCE_LINE0,
  45. TRIGGER_SOURCE_LINE2,
  46. TRIGGER_SOURCE_LINE3,
  47. TRIGGER_SOURCE_Anyway,
  48. };
  49. static std::shared_ptr<CvxCamera> createInstance(E_CameraType type);
  50. virtual int64_t enumDevicesSN(std::vector<std::string>& sn) = 0;
  51. virtual int64_t openCamera(const char* camSN) = 0;
  52. virtual int64_t setInitParameters() = 0;
  53. virtual std::string getCameraSN() = 0;
  54. virtual int64_t getCameraImageSize(int64_t &size) = 0;
  55. virtual int64_t getCameraImageWidth(int64_t& width) = 0;
  56. virtual int64_t getCameraImageHeigth(int64_t& height) = 0;
  57. #ifdef USE_OPENCV
  58. virtual int64_t getOneImage(cv::Mat& img) = 0;
  59. virtual int64_t takeSingleImage(cv::Mat& img) = 0;//软触发并取一次图
  60. #endif
  61. #ifdef USE_HALCON
  62. virtual int64_t getOneImage(HalconCpp::HObject& img) = 0;
  63. virtual int64_t takeSingleImage(HalconCpp::HObject& img) = 0;//软触发并取一次图
  64. #endif // USE_HALCON
  65. virtual int64_t closeCamera() = 0 ;
  66. virtual int64_t reConnectCamera() = 0;
  67. virtual int64_t clearCameraBuf() = 0;
  68. virtual int64_t startGrabbing() = 0;
  69. virtual int64_t stopGrabbing() = 0;
  70. virtual int64_t softTriggerOnce() = 0;//软触发一次
  71. virtual int64_t setPixelType(E_PIXEL_TYPE type) = 0; //设置图像格式
  72. virtual int64_t setTriggerMode(E_TRIGGER_MODE mode) = 0; //设置触发模式
  73. virtual int64_t setTriggerSource(E_TRIGGER_SOURCE source) = 0; //设置触发源
  74. virtual float getExposureTime() = 0;//获取设备当前曝光时间
  75. virtual int64_t setExposureTime(float expTime) = 0;//设置曝光
  76. virtual int64_t setTriggerDelay(int delay) = 0; //设置触发延时
  77. virtual int64_t setGain(float gainValue) = 0; //设置增益
  78. virtual float getGain() = 0;//获取增益
  79. enum
  80. {
  81. IMAGESIZE_DEFAULT_WIDTH = 2590,
  82. IMAGESIZE_DEFAULT_HEIGHT = 1944,
  83. };
  84. enum {
  85. SUCCESS = 0,
  86. ACTION_FAILED_UNDO = -100001,
  87. GAMERA_UNKOWN_CONTROLLER = -98000,
  88. GAMERA_FAILED_NODEVICE,
  89. GAMERA_FAILED_ALLOCATE,
  90. GAMERA_FAILED_OVERCONNECT,
  91. GAMERA_FAILED_TOCONNECT,
  92. GAMERA_FAILED_UNCONNECTED,
  93. GAMERA_FAILED_SETEXPOSURE,
  94. GAMERA_FAILED_INACTION,
  95. GAMERA_FAILED_TIMEOUTEXEC,
  96. GAMERA_FAILED_NOIMAGEACC,
  97. GAMERA_FAILED_IMAGEBUFLEN,
  98. GAMERA_FAILED_STDEXCEPTION,
  99. GAMERA_FAILED_UNKNOWNEXCEPTION,
  100. GAMERA_FAILED_GETIMAGE,
  101. ERROR_UNDEFINE
  102. };
  103. protected:
  104. CvxCamera(){}
  105. };