Higher fps from OpenMV Cam H7 plus and MT9V034

I am working with OpenMV Cam h7 plus and MT9V034 to detect April Tags.
I have tried the built-in examples of OpenMV IDE (find_apriltags.py), the fps remains good till the moment I am not doing any processing and simply grabbing and displaying frames. When the code does processing in terms of calling the April Tag library functions and collecting the (x, y, and theta), the fps drops down to ~30 fps. This happens even in the case of QQQVGA mode. Is there any fix for it?

Also, taking the data from the sensor and publishing it in ROS was also performed. The fps was still low i.e. ~43fps (in QQQVGA mode). There was no other operation performed(not even printing of published data) during this process and then also the fps was less.

Could anyone please suggest any help on this?

The frame rate falls when the camera has to do work. This is expected.

Thanks for the response.

Could you please tell me how shall I add the double buffering feature(as you discussed to implement this feature in other posts) and suggest resources(if any) for implementing it?

That’s quite a bit of very specialized work. However, it could possibly get you going a little faster.

AprilTags is one of the heaviest algorithms however. You should time the number of milliseconds it takes on the camera. You will not be able to run faster than 1000/ms you measure.

Can you please clarify the sentence “You will not be able to run faster than 1000/ms you measure.”? What actually you are referring to here?

If you measure that it’s taking 50ms for example to run the find_apriltags() algorithm on an image then the max FPS is 20. Nothing with double buffering will help. Double buffering only helps if you see find_apriltags() taking like 25ms to execute and the FPS is still 20. This means then that you are dropping frames which double buffering can help fix.

Thanks for the explanation.

One of my colleagues has been working with OpenMV H7. The sensor mode was set to QQQVGA, distance from lens to April tag was kept 245 mm, ambient lux was 51 and exposure time was 2000us. The result data shows that the OpenMV H7 detects and obtains april tag data at a linear speed of upto 1.7m/s with an FPS of ~71.4.
Now, we are using OpenMV Cam H7 Plus which is having high processing capability but the fps has been dropped further as mentioned earlier.
Can this behaviour be explained?

Also, does an ultrawide lens have any effect on FPS?

The H7 Plus has a different camera module that’s tailored for larger resolutions.

Use the sensor.SET_READOUT_WINDOW IOCTL to get the best frame rate out of the OV5640. There’s an example that does 100 FPS AprilTag tracking.


Will it be possible to get more FPS if I use SPI communication protocol?

No, putting it in triggered mode reduces the FPS.

Just run the high FPS example and set the res to QQQVGA. You should get 400+ FPS (with the MT9V034) the ov5640 should do 200+ FPS.

Hi, I’ve tried the FPS example with the frame size set to QQQVGA, and pixel format set to GRAYSCALE. But on the H7 plus and OV5640 camera, I can only get a frame rate as high as 45.4545 fps instead of 200+ fps. Can you please help me on this? Thanks!

See Example->Readout control. The higher fps example only works for the MT9V034.