ESP32-CAM image difference

mocialov
Posts: 1
Joined: Tue Nov 24, 2020 10:30 pm

ESP32-CAM image difference

Postby mocialov » Tue Nov 24, 2020 10:48 pm

I am trying to get the greyscale image difference between previous and current image with the CameraWebServer example. I am facing an issue of the difference image not being displayed in the web server

My code for getting the image difference is:

Code: Select all


static esp_err_t stream_handler(httpd_req_t *req){

int frame_nr = 1;
int prev_image_size = -1;
uint8_t * _jpg_buf_prev = NULL;
uint8_t * _jpg_buf_diff = NULL;

...

while(true){
frame_nr = frame_nr + 1;

fb = esp_camera_fb_get();

...

if(res == ESP_OK){
if ((frame_nr % 2) == 0){

    if (_jpg_buf != NULL){

        if (_jpg_buf_prev == NULL){
            prev_image_size = _jpg_buf_len;
            _jpg_buf_prev = (uint8_t*)malloc(sizeof(uint8_t)*_jpg_buf_len);
        }

        for (int i = 0; i < _jpg_buf_len; i++){
            _jpg_buf_prev[i] = _jpg_buf[i];
        }
    }

    res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len);

}else{

    _jpg_buf_diff = (uint8_t*)malloc(sizeof(uint8_t)*min(prev_image_size,_jpg_buf_len));

    if (_jpg_buf_prev != NULL){

        for (int i = 0; i < min(prev_image_size,_jpg_buf_len); i++){
            int temp = abs((int)_jpg_buf[i] - (int)_jpg_buf_prev[i]);
            _jpg_buf_diff[i] = (uint8_t)temp;
        }

        res = httpd_resp_send_chunk(req, (const char *)_jpg_buf_diff, min(prev_image_size,_jpg_buf_len));

    }else{
        Serial.println("something else");
    }
}

delay(3000);

}
...
}

I have noticed that buffer size is different with every frame, so I cannot use the method 'image_abs_diff'.

As a result, I see the first frame in the created web server viewer, but all the consecutive frames are just black

What could be a problem?

alanesq
Posts: 84
Joined: Thu Dec 14, 2017 8:38 pm

Re: ESP32-CAM image difference

Postby alanesq » Wed Nov 25, 2020 10:25 am

Hi,

It sounds like your captured images may be jpg rather than greyscale if the sizes change?

This may be of use/interest as it shows how to grab and compare greyscale images
https://eloquentarduino.github.io/2020/ ... o-version/

Who is online

Users browsing this forum: No registered users and 329 guests