How to compile OpenCV with Gstreamer [Ubuntu&Windows]

Galaktyk 01
5 min readMar 16, 2019

--

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 ..
After finished the configuration, Go check GStreamer and Python section

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)
It’ll take a while, so go get some coffee. ☕
Building completed 🎊

◾ Install package

sudo make install
sudo ldconfig

7. Final check

import cv2
print(cv2.getBuildInformation())
Can import opencv
GStreamer detected

## 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/

Install both runtime and development package!

◾ 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.

Cmake will locate your Gstreamer and Python directories.

◾ Click Configure again, the red value will change to white.

After click Generate

◾ 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()
Enjoy 🐔

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

--

--