Frame buffer depth and power consumption

Hello there,
I am not sure whether I understand well how single frame buffering works. How can I make sure that only when I need to capture frames (i.e., when I call sensor.snapshot), frames are taken by the camera? Does the current frame stay in the buffer until it is retrieved with sensor.snapshot, so that the camera stays inactive in-between calls of the sensor.snapshot function?

Does it mean that while being lower-performance, single frame buffering potentially consumes less power (how much)?

Does it mean that when I enable single frame buffering and introduce a delay of, let’s say, 10 seconds between each sensor.snapshot call, the camera really only operates once every 10 seconds, or are frames taken all the time even in single buffer mode, and retrieved only when sensor.snapshot is called?

Hi!

Yes, if you set a single frame buffer (this has to be the last thing you do before calling snapshot). Then the OpenMV Cam will capture exactly one image on snapshot().

Basically here’s what happens… when you call snapshot and image capture is not running it’s started and then it grabs a frame and stores that in a frame buffer. Then your call returns with that image. Image capture keeps running through interrupts in the background. If there’s no free buffer when it tries to capture the next frame it then stops.

However, keep in mind the camera itself is still generating frames. The power cost of the MCU storing the frame is not a lot compared to the camera constantly running.