RidgeRun OpenCV Fork: Difference between revisions
No edit summary |
No edit summary |
||
Line 24: | Line 24: | ||
* OpenCV Version: 4.4.0 | * OpenCV Version: 4.4.0 | ||
* FPS and CPU usage taken with the [https://github.com/ridgerun/gst-perf GstPerf] element. | * FPS and CPU usage taken with the [https://github.com/ridgerun/gst-perf GstPerf] element. | ||
* Jetson Nano | |||
* The following source: | * The following source: | ||
<source lang=c++> | <source lang=c++> |
Revision as of 23:43, 21 September 2020
Introduction
The RidgeRun OpenCV fork is a modified version of the project with various improvements around speed and efficiency. While some changes are general (i.e.: any platform will benefit from them), others are specific to the NVIDIA Jetson family.
The fork is hosted at:
https://github.com/RidgeRun/opencv
Building the Project
Follow the instructions in our Compiling OpenCV from Source page. Make sure you select:
- RidgeRun fork
- GStreamer support
- CUDA support (if applicable)
Enhancements
GStreamer Video Capture
Effectively removes the memory copy when transferring data from the GstBuffer to the cv::Mat. Now the GstBuffer and its associated memory will remain alive throughout the lifespan of the matrix.
Tested under the following conditions
- OpenCV Version: 4.4.0
- FPS and CPU usage taken with the GstPerf element.
- Jetson Nano
- The following source:
#include <opencv2/opencv.hpp> int main() { cv::VideoCapture cap( "fakesrc sizetype=fixed filltype=zero sizemax=24883200 ! video/x-raw,format=BGR,width=3840,height=2160 ! " "perf print-arm-load=true ! appsink drop=false sync=false max-buffers=3", cv::CAP_GSTREAMER); while(1){ cv::Mat frame; cap >> frame; } cap.release(); return 0; }
- Run with
g++ -o benchmark benchmark.cc $(pkg-config --cflags --libs opencv4$) -std=c++11 GST_DEBUG=perf:4 ./benchmark