Sitemap

How to compile OpenCV with Gstreamer [Ubuntu&Windows]

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 ..
Press enter or click to view image in full size
Press enter or click to view image in full size
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. ☕
Press enter or click to view image in full size
Building completed 🎊

◾ Install package

sudo make install
sudo ldconfig

7. Final check

import cv2
print(cv2.getBuildInformation())
Can import opencv
Press enter or click to view image in full size
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
Press enter or click to view image in full size

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.

Press enter or click to view image in full size
Cmake will locate your Gstreamer and Python directories.

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

Press enter or click to view image in full size
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

Press enter or click to view image in full size
😉👌

◾ Finally, add bin & lib folder to your env PATH , (from C:\opencv-4.1.0\build\install\x64\vc16)

Press enter or click to view image in full size

7. Final check

◾ Identify the location of a cv2 module

import cv2
print(cv2.__file__)"

◾ Check build information

print(cv2.getBuildInformation())
Press enter or click to view image in full size
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

--

--

Responses (9)