|
@@ -236,18 +236,18 @@ void CCamera::EnableAutoExposure(int flash_duration)
|
|
|
|
|
|
|
|
esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay)
|
|
esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay)
|
|
|
{
|
|
{
|
|
|
- string ftype;
|
|
|
|
|
- int _size;
|
|
|
|
|
-
|
|
|
|
|
- uint8_t *zwischenspeicher = NULL;
|
|
|
|
|
-
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - Start");
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
|
|
+ _Image->EmptyImage(); //Delete previous stored raw image -> black image
|
|
|
|
|
+
|
|
|
|
|
+ #ifdef ALGROI_LOAD_FROM_MEM_AS_JPG__SHOW_TAKE_IMAGE_PROCESS
|
|
|
|
|
+ tfliteflow.SetNewAlgROI(false);
|
|
|
|
|
+ #endif
|
|
|
|
|
+
|
|
|
LEDOnOff(true);
|
|
LEDOnOff(true);
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - Start");
|
|
|
|
|
-#endif
|
|
|
|
|
-
|
|
|
|
|
if (delay > 0)
|
|
if (delay > 0)
|
|
|
{
|
|
{
|
|
|
LightOnOff(true);
|
|
LightOnOff(true);
|
|
@@ -255,18 +255,18 @@ esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay)
|
|
|
vTaskDelay( xDelay );
|
|
vTaskDelay( xDelay );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After LightOn");
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After LightOn");
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
camera_fb_t * fb = esp_camera_fb_get();
|
|
camera_fb_t * fb = esp_camera_fb_get();
|
|
|
esp_camera_fb_return(fb);
|
|
esp_camera_fb_return(fb);
|
|
|
fb = esp_camera_fb_get();
|
|
fb = esp_camera_fb_get();
|
|
|
if (!fb) {
|
|
if (!fb) {
|
|
|
- ESP_LOGE(TAG, "CaptureToBasisImage: Capture Failed");
|
|
|
|
|
LEDOnOff(false);
|
|
LEDOnOff(false);
|
|
|
LightOnOff(false);
|
|
LightOnOff(false);
|
|
|
|
|
|
|
|
|
|
+ ESP_LOGE(TAG, "CaptureToBasisImage: Capture Failed");
|
|
|
LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "is not working anymore (CCamera::CaptureToBasisImage) - most probably caused by a hardware problem (instablility, ...). "
|
|
LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "is not working anymore (CCamera::CaptureToBasisImage) - most probably caused by a hardware problem (instablility, ...). "
|
|
|
"System will reboot.");
|
|
"System will reboot.");
|
|
|
doReboot();
|
|
doReboot();
|
|
@@ -279,20 +279,13 @@ esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay)
|
|
|
loadNextDemoImage(fb);
|
|
loadNextDemoImage(fb);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- _size = fb->len;
|
|
|
|
|
- zwischenspeicher = (uint8_t*) malloc(_size);
|
|
|
|
|
- if (!zwischenspeicher)
|
|
|
|
|
- {
|
|
|
|
|
- ESP_LOGE(TAG, "Insufficient memory space for image in function CaptureToBasisImage()");
|
|
|
|
|
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Insufficient memory space for image in function CaptureToBasisImage()");
|
|
|
|
|
- }
|
|
|
|
|
- for (int i = 0; i < _size; ++i)
|
|
|
|
|
- *(zwischenspeicher + i) = *(fb->buf + i);
|
|
|
|
|
|
|
+ CImageBasis* _zwImage = new CImageBasis();
|
|
|
|
|
+ _zwImage->LoadFromMemory(fb->buf, fb->len);
|
|
|
esp_camera_fb_return(fb);
|
|
esp_camera_fb_return(fb);
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After fb_get");
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After fb_get");
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
LEDOnOff(false);
|
|
LEDOnOff(false);
|
|
|
|
|
|
|
@@ -302,15 +295,9 @@ esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay)
|
|
|
// TickType_t xDelay = 1000 / portTICK_PERIOD_MS;
|
|
// TickType_t xDelay = 1000 / portTICK_PERIOD_MS;
|
|
|
// vTaskDelay( xDelay ); // wait for power to recover
|
|
// vTaskDelay( xDelay ); // wait for power to recover
|
|
|
|
|
|
|
|
- uint8_t * buf = NULL;
|
|
|
|
|
-
|
|
|
|
|
- CImageBasis _zwImage;
|
|
|
|
|
- _zwImage.LoadFromMemory(zwischenspeicher, _size);
|
|
|
|
|
- free(zwischenspeicher);
|
|
|
|
|
-
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After LoadFromMemory");
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After LoadFromMemory");
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
stbi_uc* p_target;
|
|
stbi_uc* p_target;
|
|
|
stbi_uc* p_source;
|
|
stbi_uc* p_source;
|
|
@@ -318,31 +305,31 @@ esp_err_t CCamera::CaptureToBasisImage(CImageBasis *_Image, int delay)
|
|
|
int width = image_width;
|
|
int width = image_width;
|
|
|
int height = image_height;
|
|
int height = image_height;
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- std::string _zw = "Targetimage: " + std::to_string((int) _Image->rgb_image) + " Size: " + std::to_string(_Image->width) + ", " + std::to_string(_Image->height);
|
|
|
|
|
- _zw = _zw + " _zwImage: " + std::to_string((int) _zwImage.rgb_image) + " Size: " + std::to_string(_zwImage.width) + ", " + std::to_string(_zwImage.height);
|
|
|
|
|
- LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, _zw);
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ std::string _zw = "Targetimage: " + std::to_string((int) _Image->rgb_image) + " Size: " + std::to_string(_Image->width) + ", " + std::to_string(_Image->height);
|
|
|
|
|
+ _zw = _zw + " _zwImage: " + std::to_string((int) _zwImage.rgb_image) + " Size: " + std::to_string(_zwImage.width) + ", " + std::to_string(_zwImage.height);
|
|
|
|
|
+ LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, _zw);
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
for (int x = 0; x < width; ++x)
|
|
for (int x = 0; x < width; ++x)
|
|
|
for (int y = 0; y < height; ++y)
|
|
for (int y = 0; y < height; ++y)
|
|
|
{
|
|
{
|
|
|
p_target = _Image->rgb_image + (channels * (y * width + x));
|
|
p_target = _Image->rgb_image + (channels * (y * width + x));
|
|
|
- p_source = _zwImage.rgb_image + (channels * (y * width + x));
|
|
|
|
|
|
|
+ p_source = _zwImage->rgb_image + (channels * (y * width + x));
|
|
|
p_target[0] = p_source[0];
|
|
p_target[0] = p_source[0];
|
|
|
p_target[1] = p_source[1];
|
|
p_target[1] = p_source[1];
|
|
|
p_target[2] = p_source[2];
|
|
p_target[2] = p_source[2];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After Copy To Target");
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - After Copy To Target");
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
- free(buf);
|
|
|
|
|
|
|
+ delete _zwImage;
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - Done");
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ LogFile.WriteHeapInfo("CCamera::CaptureToBasisImage - Done");
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
return ESP_OK;
|
|
return ESP_OK;
|
|
|
}
|
|
}
|
|
@@ -376,21 +363,21 @@ esp_err_t CCamera::CaptureToFile(std::string nm, int delay)
|
|
|
}
|
|
}
|
|
|
LEDOnOff(false);
|
|
LEDOnOff(false);
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- ESP_LOGD(TAG, "w %d, h %d, size %d", fb->width, fb->height, fb->len);
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ ESP_LOGD(TAG, "w %d, h %d, size %d", fb->width, fb->height, fb->len);
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
nm = FormatFileName(nm);
|
|
nm = FormatFileName(nm);
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- ESP_LOGD(TAG, "Save Camera to: %s", nm.c_str());
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ ESP_LOGD(TAG, "Save Camera to: %s", nm.c_str());
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
ftype = toUpper(getFileType(nm));
|
|
ftype = toUpper(getFileType(nm));
|
|
|
|
|
|
|
|
-#ifdef DEBUG_DETAIL_ON
|
|
|
|
|
- ESP_LOGD(TAG, "Filetype: %s", ftype.c_str());
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+ #ifdef DEBUG_DETAIL_ON
|
|
|
|
|
+ ESP_LOGD(TAG, "Filetype: %s", ftype.c_str());
|
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
uint8_t * buf = NULL;
|
|
uint8_t * buf = NULL;
|
|
|
size_t buf_len = 0;
|
|
size_t buf_len = 0;
|
|
@@ -604,7 +591,7 @@ void CCamera::GetCameraParameter(httpd_req_t *req, int &qual, framesize_t &resol
|
|
|
if (qual < 0)
|
|
if (qual < 0)
|
|
|
qual = 0;
|
|
qual = 0;
|
|
|
}
|
|
}
|
|
|
- };
|
|
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -674,6 +661,7 @@ bool CCamera::getCameraInitSuccessful()
|
|
|
return CameraInitSuccessful;
|
|
return CameraInitSuccessful;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
std::vector<std::string> demoFiles;
|
|
std::vector<std::string> demoFiles;
|
|
|
|
|
|
|
|
void CCamera::useDemoMode()
|
|
void CCamera::useDemoMode()
|