How to access maximum frame rate in OpenCV Python for NVIDIA Jetson platforms cameras
As you already know, nowadays Python is one of the most common programming languages used by developers across various domains and is gaining more and more popularity every day. It has especially become popular for developing image processing applications due to the emergence of OpenCV – a widely used library to help develop computer vision-oriented applications. These include systems for inspection and surveillance, people/vehicle counting, object detection, medical image analysis, etc.
OpenCV had earlier supported C/C++. But today it is known for leveraging Python to ensure ease of application development. Also, the existing OpenCV Python SDK does not use an efficient method to handle video frames. As a result, it causes frame drops, which can be a serious problem while receiving the frames in the Python application for further image processing.
In fact, this is one of the most frequently reported issues by customers who use our NVIDIA Jetson platforms cameras – specifically high-resolution cameras like e-CAM130A_CUXVR – 13MP camera solution for the NVIDIA Jetson AGX Xavier.
The reason for it is that this camera supports 4K@30fps, but the customer can access only 10fps in 4K resolution while using the default OpenCV Python SDK. In reality, customers need a higher resolution with a minimum of 30fps for their applications to ensure effective image processing capabilities.
Hence, e-con Systems came up with a solution through which customers can access the frame seamlessly without affecting the application’s performance while receiving the frames. We enabled the access of frames by directly using V4L2 APIs, thereby bypassing the OpenCV VideoIO module in the Python layer (at the application level).
We chose this method over using a conventional Gstreamer-based implementation in OpenCV using cv.VideoCapture () API. The latter’s API pipeline is not effectively implemented to handle the camera frames with higher resolution and higher frame rate without leading to frame drops in the application layer.
The block diagram below shows the conventional pipeline and e-con’s approach to access the frame in the Python’s application layer.
Using V4L2 python plugins, we received the frame by its native format – supported by the camera. If you need the native format, you can take it as it is. If a different format is required, you can use the cvtColor API for image processing in OpenCV.
If you are looking for this V4L2 Python package or have any questions, please write to email@example.com .
Interested in other high resolution cameras from e-con Systems? Check out these!
- e-CAM130_CUXVR – 13MP multi-camera solution for the NVIDIA Jetson AGX Xavier
- See3CAM_CU135 – 13MP USB3 fixed focus Camera
- e-CAM80_CUNX – 4K ultra-low light camera based on Sony STARVIS IMX415 for the NVIDIA Jetson Xavier NX/Nano
- e-CAM82_USB – Sony STARVIS IMX415-based 4K ultra-lowlight USB camera.