OpenCV released OpenCV-3.4.4 and OpenCV-4.0.0 on 20th November. There have been a lot of bug fixes and other changes in these versions. The release highlights are as follows:
- OpenCV is now C++11 library and requires C++11-compliant compiler. Minimum required CMake version has been raised to 3.5.1.
- A lot of C API from OpenCV 1.x has been removed.
- Persistence (storing and loading structured data to/from XML, YAML or JSON) in the core module has been completely reimplemented in C++ and lost the C API as well.
- New module G-API has been added, it acts as an engine for very efficient graph-based image procesing pipelines.
- dnn module now includes experimental Vulkan backend and supports networks in ONNX format.
- The popular Kinect Fusion algorithm has been implemented and optimized for CPU and GPU (OpenCL)
QR code detector and decoder have been added to the objdetect module. - Very efficient and yet high-quality DIS dense optical flow algorithm has been moved from opencv_contrib to the video module.
In this post, we will provide a bash script for installing OpenCV-3.4.4 (C++ and Python 3.5) on Ubuntu 16.04. We will also briefly study the script to understand what’s going in it. Note that this script will install OpenCV in a local directory and not on the entire system.
1. Install OpenCV 3.4.4
Step 0: Select OpenCV version to install
1 2 3 4 | echo "OpenCV installation by learnOpenCV.com" #Specify OpenCV version cvVersion= "3.4.4" |
We are also going to clean build
directories and create installation
directory.
1 2 3 | # Clean build directories rm -rf opencv /build rm -rf opencv_contrib /build |
1 2 3 | # Create directory for installation mkdir installation mkdir installation /OpenCV- "$cvVersion" |
Finally, we will be storing the current working directory in cwd
variable. We are also going to refer to this directory as OpenCV_Home_Dir throughout this article.
1 2 | # Save current working directory cwd=$( pwd ) |
Step 1: Update Packages
1 2 | sudo apt -y update sudo apt -y upgrade |
Step 2: Install OS Libraries
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | sudo apt -y remove x264 libx264-dev ## Install dependencies sudo apt -y install build-essential checkinstall cmake pkg-config yasm sudo apt -y install git gfortran sudo apt -y install libjpeg8-dev libjasper-dev libpng12-dev sudo apt -y install libtiff5-dev sudo apt -y install libtiff-dev sudo apt -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt -y install libxine2-dev libv4l-dev cd /usr/include/linux sudo ln -s -f .. /libv4l1-videodev .h videodev.h cd $cwd sudo apt -y install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev sudo apt -y install libgtk2.0-dev libtbb-dev qt5-default sudo apt -y install libatlas-base-dev sudo apt -y install libfaac-dev libmp3lame-dev libtheora-dev sudo apt -y install libvorbis-dev libxvidcore-dev sudo apt -y install libopencore-amrnb-dev libopencore-amrwb-dev sudo apt -y install libavresample-dev sudo apt -y install x264 v4l-utils # Optional dependencies sudo apt -y install libprotobuf-dev protobuf-compiler sudo apt -y install libgoogle-glog-dev libgflags-dev sudo apt -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen |
Step 3: Install Python Libraries
1 2 3 | sudo apt -y install python3-dev python3-pip python3-venv sudo -H pip3 install -U pip numpy sudo apt -y install python3-testresources |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | cd $cwd ############ For Python 3 ############ # create virtual environment python3 -m venv OpenCV- "$cvVersion" -py3 echo "# Virtual Environment Wrapper" >> ~/.bashrc echo "alias workoncv-$cvVersion=\"source $cwd/OpenCV-$cvVersion-py3/bin/activate\"" >> ~/.bashrc source "$cwd" /OpenCV- "$cvVersion" -py3 /bin/activate # now install python libraries within this virtual environment pip install wheel numpy scipy matplotlib scikit-image scikit-learn ipython dlib # quit virtual environment deactivate ###################################### |
If you are solely a Python user, it is easier to use pip install opencv-contrib-python==3.4.4.19.
Step 4: Download opencv and opencv_contrib
1 2 3 4 5 6 7 8 9 | git clone https: //github .com /opencv/opencv .git cd opencv git checkout $cvVersion cd .. git clone https: //github .com /opencv/opencv_contrib .git cd opencv_contrib git checkout $cvVersion cd .. |
Step 5: Compile and install OpenCV with contrib modules
First we navigate to the build directory.
1 2 3 | cd opencv mkdir build cd build |
Next, we start the compilation and installation process.
1 2 3 4 5 6 7 8 9 10 11 | cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=$cwd /installation/OpenCV- "$cvVersion" \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D OPENCV_PYTHON3_INSTALL_PATH=$cwd /OpenCV- $cvVersion-py3 /lib/python3 .5 /site-packages \ -D WITH_QT=ON \ -D WITH_OPENGL=ON \ -D OPENCV_EXTRA_MODULES_PATH=../.. /opencv_contrib/modules \ -D BUILD_EXAMPLES=ON .. |
1 2 | make -j4 make install |
2. How to use OpenCV in C++
There are two ways to use OpenCV in C++, the preferred way is to use CMake, the other one being command line compilation using g++. We will have a look at both ways.
Using CMakeLists.txt
The basic structure of your CMakeLists.txt will stay the same. Only difference being, that you will have to set OpenCV_DIR as shown below.
1 | SET(OpenCV_DIR <OpenCV_Home_Dir> /installation/OpenCV-3 .4.4 /share/OpenCV/ ) |
Make sure that you replace OpenCV_Home_Dir with correct path. For example, in my case:
1 | SET(OpenCV_DIR /home/hp/OpenCV_installation/installation/OpenCV-3 .4.4 /share/OpenCV/ ) |
Once you have made your CMakeLists.txt, follow the steps given below.
1 2 3 | mkdir build && cd build cmake .. cmake --build . --config Release |
This will generate your executable file in build directory.
Using g++
To compile a sample file (let’s say my_sample_file.cpp
), use the following command.
1 | g++ `pkg-config --cflags --libs <OpenCV_Home_Dir> /installation/OpenCV-3 .4.4 /lib/pkgconfig/opencv .pc` my_sample_file.cpp -o my_sample_file |
3. How to use OpenCV in Python
To use the OpenCV version installed using Python script, first we activate the Python Virtual Environment.
For OpenCV-3.4.4 : Python 3
1 | workoncv-3.4.4 |
Once you have activated the virtual environment, you can enter Python shell and test OpenCV version.
1 2 3 | ipython import cv2 print(cv2.__version__) |
Hope this script proves to be useful for you :). Stay tuned for more interesting stuff. In case of any queries, feel free to comment below and we will get back to you as soon as possible.