GStreamer 1.18.4 with OpenCV example on a Raspberry Pi 32-bits
BSD-3-CLAUSE License
An working example of the GStreame 1.18.4 with the new rpicamsrc source. Please note, it only works on a Raspberry Pi with an 32-bits OS. If you have an 64-bits OS see https://github.com/Qengineering/GStreamer-1.18.4-RPi_64-bits
To run the application, you have to:
$ sudo apt-get install codeblocks
)To extract and run the app in Code::Blocks $ mkdir MyDir $ cd MyDir $ wget https://github.com/Qengineering/GStreamer-1.18.4-RPi_32-bits/archive/refs/heads/main.zip $ unzip -j master.zip Remove master.zip, LICENSE and README.md as they are no longer needed. $ rm master.zip $ rm LICENSE $ rm README.md Your MyDir folder must now look like this: GStreamerTest32.cpb main.cpp
To run the application load the project file GStreamerTest32.cbp in Code::Blocks. Next, follow the instructions at Hands-On.
The Raspicam supports many sizes and frame rates, as you can see here. You can switch between the different options by altering the parameters in the pipeline. As long it's a valid combination, it will work. For instance:
//pipeline parameters
int capture_width = 640 ;
int capture_height = 480 ;
int display_width = 640 ;
int display_height = 480 ;
int framerate = 90 ;
Since the developer of the rpicamsrc, Jan Schmidt aka thaytan, took the raspivid parameters as best they could, many can now be used in the pipeline. An example;
"rpicamsrc exposure-mode=off shutter-speed=50 preview=false ! "
"video/x-raw, width=(int)" + std::to_string(capture_width) + ", height=(int)" + std::to_string(capture_height) + ", framerate=(fraction)" + std::to_string(framerate) +"/1 !"
" videoscale ! video/x-raw,"
" width=(int)" + std::to_string(display_width) + ","
" height=(int)" + std::to_string(display_height) + " ! "
" videoconvert ! video/x-raw, format=(string)BGR ! appsink";
For more info see rpicamsrc