ClassControllCamera.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #pragma once
  2. #ifndef CLASSCONTROLLCAMERA_H
  3. #define CLASSCONTROLLCAMERA_H
  4. #include <string>
  5. #include "freertos/FreeRTOS.h"
  6. #include "freertos/task.h"
  7. #include "freertos/queue.h"
  8. #include "freertos/event_groups.h"
  9. #include "esp_camera.h"
  10. #include <string>
  11. #include <esp_http_server.h>
  12. #include "CImageBasis.h"
  13. #include "../../include/defines.h"
  14. typedef struct
  15. {
  16. uint16_t CamSensor_id;
  17. framesize_t ImageFrameSize = FRAMESIZE_VGA; // 0 - 10
  18. gainceiling_t ImageGainceiling; // Image gain (GAINCEILING_x2, x4, x8, x16, x32, x64 or x128)
  19. int ImageQuality; // 0 - 63
  20. int ImageBrightness; // (-2 to 2) - set brightness
  21. int ImageContrast; //-2 - 2
  22. int ImageSaturation; //-2 - 2
  23. int ImageSharpness; //-2 - 2
  24. bool ImageAutoSharpness;
  25. int ImageSpecialEffect; // 0 - 6
  26. int ImageWbMode; // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home)
  27. int ImageAwb; // white balance enable (0 or 1)
  28. int ImageAwbGain; // Auto White Balance enable (0 or 1)
  29. int ImageAec; // auto exposure off (1 or 0)
  30. int ImageAec2; // automatic exposure sensor (0 or 1)
  31. int ImageAeLevel; // auto exposure levels (-2 to 2)
  32. int ImageAecValue; // set exposure manually (0-1200)
  33. int ImageAgc; // auto gain off (1 or 0)
  34. int ImageAgcGain; // set gain manually (0 - 30)
  35. int ImageBpc; // black pixel correction
  36. int ImageWpc; // white pixel correction
  37. int ImageRawGma; // (1 or 0)
  38. int ImageLenc; // lens correction (1 or 0)
  39. int ImageHmirror; // (0 or 1) flip horizontally
  40. int ImageVflip; // Invert image (0 or 1)
  41. int ImageDcw; // downsize enable (1 or 0)
  42. int ImageDenoiseLevel; // The OV2640 does not support it, OV3660 and OV5640 (0 to 8)
  43. int ImageWidth;
  44. int ImageHeight;
  45. int ImageLedIntensity;
  46. bool ImageZoomEnabled;
  47. int ImageZoomOffsetX;
  48. int ImageZoomOffsetY;
  49. int ImageZoomSize;
  50. int WaitBeforePicture;
  51. bool isImageSize;
  52. bool CameraInitSuccessful;
  53. bool changedCameraSettings;
  54. bool DemoMode;
  55. bool SaveAllFiles;
  56. } camera_controll_config_temp_t;
  57. extern camera_controll_config_temp_t CCstatus;
  58. class CCamera
  59. {
  60. protected:
  61. void ledc_init(void);
  62. bool loadNextDemoImage(camera_fb_t *fb);
  63. long GetFileSize(std::string filename);
  64. void SetCamWindow(sensor_t *s, int frameSizeX, int frameSizeY, int xOffset, int yOffset, int xTotal, int yTotal, int xOutput, int yOutput, int imageVflip);
  65. void SetImageWidthHeightFromResolution(framesize_t resol);
  66. void SanitizeZoomParams(int imageSize, int frameSizeX, int frameSizeY, int &imageWidth, int &imageHeight, int &zoomOffsetX, int &zoomOffsetY);
  67. public:
  68. CCamera(void);
  69. esp_err_t InitCam(void);
  70. void LightOnOff(bool status);
  71. void LEDOnOff(bool status);
  72. esp_err_t setSensorDatenFromCCstatus(void);
  73. esp_err_t getSensorDatenToCCstatus(void);
  74. int SetCamGainceiling(sensor_t *s, gainceiling_t gainceilingLevel);
  75. void SetCamSharpness(bool autoSharpnessEnabled, int sharpnessLevel);
  76. void SetCamSpecialEffect(sensor_t *s, int specialEffect);
  77. void SetCamContrastBrightness(sensor_t *s, int _contrast, int _brightness);
  78. esp_err_t CaptureToHTTP(httpd_req_t *req, int delay = 0);
  79. esp_err_t CaptureToStream(httpd_req_t *req, bool FlashlightOn);
  80. void SetQualityZoomSize(int qual, framesize_t resol, bool zoomEnabled, int zoomOffsetX, int zoomOffsetY, int imageSize, int imageVflip);
  81. void SetZoomSize(bool zoomEnabled, int zoomOffsetX, int zoomOffsetY, int imageSize, int imageVflip);
  82. void SetLEDIntensity(float _intrel);
  83. bool testCamera(void);
  84. bool getCameraInitSuccessful(void);
  85. void useDemoMode(void);
  86. framesize_t TextToFramesize(const char *text);
  87. esp_err_t CaptureToFile(std::string nm, int delay = 0);
  88. esp_err_t CaptureToBasisImage(CImageBasis *_Image, int delay = 0);
  89. };
  90. extern CCamera Camera;
  91. #endif