How to compile OpenCV with Gstreamer [Ubuntu&Windows]
Update 2023🔥
You can try using cpp package manager here → vcpkg
## Ubuntu
My setup
Ubuntu 16.04
Python 3.7
OpenCV 4.1.0
Gstreamer 1.8.3
Cmake 3.5.1
1. install gstreamer1.0
sudo apt-get install gstreamer1.0*
sudo apt install ubuntu-restricted-extras
2. install lib, dev package
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
3. install numpy
I recommend to use conda or virtualenv over the native one, in case we mess things up.
source activate <your_env>
pip install numpy
4. Clone OpenCV repo
git clone https://github.com/opencv/opencv.git
cd opencv/
git checkout 4.1.0
5. Building
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D PYTHON_EXECUTABLE=$(which python3) \
-D BUILD_opencv_python2=OFF \
-D CMAKE_INSTALL_PREFIX=$(python3 -c “import sys; print(sys.prefix)”) \
-D PYTHON3_EXECUTABLE=$(which python3) \
-D PYTHON3_INCLUDE_DIR=$(python3 -c “from distutils.sysconfig import get_python_inc; print(get_python_inc())”) \
-D PYTHON3_PACKAGES_PATH=$(python3 -c “from distutils.sysconfig import get_python_lib; print(get_python_lib())”) \
-D WITH_GSTREAMER=ON \
-D BUILD_EXAMPLES=ON ..
6. Check your log
✔ Python 3 section: verify that it can detect the correct python and paths are correct.
✔ Check the GStreamer section.
It should shown a “YES”(version number). otherwise please check your GStreamer lib package
if something went wrong, remove build folder and try again.
7. Building
sudo make -j$(nproc)
◾ Install package
sudo make install
sudo ldconfig
7. Final check
import cv2
print(cv2.getBuildInformation())
## WINDOWS
My setup
Windows 10 1903
python 3.7.0
OpenCV 4.1.0
Gstreamer 1.16.4
Cmake 3.14.5
Visual Studio 2019
1. Uninstall old opencv-python
pip uninstall opencv-python
2. Install numpy
pip install numpy
3. Download gstreamer and opencv
◾ Install both gstreamer-runtime and gstreamer-development package in the same location
>> https://gstreamer.freedesktop.org/download/
◾ Download opencv release sources (.zip file) and extract.
>> https://github.com/opencv/opencv/archive/4.1.0.zip
4. Set Path Variable
◾ Add gstreamer to Path variable
◾ Add system variable “GSTREAMER_DIR” “C:\gstreamer\1.0\x86_64”
5. CmakeGUI
◾ install CmakeGUI 3.14.5
CmakeGUI >> https://cmake.org/download/
Visual Studio 2019(Community version is fine)
>> https://visualstudio.microsoft.com/downloads/
◾ Open CmakeGUI.
◾ Select opencv source and build folder.
◾ Click “Configure” the new window will show up then select your Visual Studio version then click Finish.
◾ Click Configure again, the red value will change to white.
◾ Click Generate
◾ Click “Open Project” to open visual studio 2019
6. Visual Studio
◾ in Visual Studio:
switch from DEBUG to RELEASE and x64
◾ Right click on INSTALL and select Build
◾ Finally, add bin & lib folder to your env PATH , (from C:\opencv-4.1.0\build\install\x64\vc16)
7. Final check
◾ Identify the location of a cv2 module
import cv2
print(cv2.__file__)"
◾ Check build information
print(cv2.getBuildInformation())
import cv2
cap = cv2.VideoCapture('autovideosrc ! videoconvert ! appsink')
while True:
ret,frame = cap.read()
cv2.imshow('',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
cap.release()
for python 3.8+
later versions of python don’t load .dll from PATH due to new policy.
you need to add gstreamer DLL dir to config.py.
D:\Python_3.8\Lib\site-packages\cv2\config.py