I have both the OpenMV H7 Plus and the OpenMV H7. With the frame buffer disabled, the OpenMV H7 achieves 150 FPS on the helloworld.py example. When I run the exact same code on the OpenMV H7 Plus, it achieves 50 FPS. Both cameras are being run under the same settings and have the same firmware. Isn’t the OpenMV H7 Plus supposed to be faster than the OpenMV H7? And not the other way around?
For my application I need the OpenMV H7 Plus to operate at the maximum FPS. Please advise.
The OV5640 has a ton of pixels. 5 million of them. The camera SoC runs at 1 GHz almost internally to sample and average all those pixels into the lower resolution for you. The OV7725 has 0.3 MP and runs much slower to do the same thing.
Since the OV5640 has so many pixels it takes it longer to output an image than the OV7725. Now, using set windowing you can crop the number of pixels the OV5640 has to work on. This reduces it’s work load making it A LOT faster. However, this means the camera Field of View is cropped. This is why we don’t have this enabled by default. If you want speed you have to trade field of view with the OV5640. But, it has more resolution.
If you use a different lens on the OV5640 then you will get that field of view back.
Anyway, you have to do decide what tradeoff you want to make.
It is not cut and dry that the OV5640 is better than the OV7725. The OV5640 takes higher res pictures. But, it is not strictly better than the OV7725 which has larger pixels and a faster FPS for lower resolutions. If OmniVision had made pixels in the OV5640 able to combine with each other in silicon without a DSP averaging them then the sensor would be strictly better. But, it does not do that internally.
This doesn’t work for a small res like QVGA. I’ve tried the test again with the sensor framesize set to QVGA and various ROIs: ROI1 = (0,0,10,10), ROI2 = (0,0,100,100), ROI3 = (0,0,200,200). ROI1, ROI2, and ROI3 all have identical FPS.
Also, why does it only work for small res? How would I make it work at a larger res like HD?