This paper mainly introduces how to install and configure opencv from the source code in Ubuntu 18.04, and uses a simple example to verify whether the installation is successful
For specific installation and configuration steps, please refer to the following article: https://cv-tricks.com/installation/opencv-4-1-ubuntu18-04/
Different from the tutorial provided in the above link:
Some dependent package installations may need to be modified
In this paper, opencv version 4.2 is installed and configured to support CUDA to accelerate the calculation of DNN module
This article does not deal with Python interface configuration, only for C + +, so steps 2 ~ 5 will be skipped
Step 1: install opencv dependency package
Step by step, install all the following dependent packages:
sudo apt-get update -y # Update the list of packages
sudo apt-get remove -y x264 libx264-dev # Remove the older version of libx264-dev and x264
sudo apt-get install -y build-essential checkinstall cmake pkg-config yasm
sudo apt-get install -y git gfortran
sudo add-apt-repository -y "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get install -y libjpeg8-dev libjasper-dev libpng12-dev
sudo apt-get install -y libtiff5-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
sudo apt-get install -y libxine2-dev libv4l-dev
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install -y qt5-default libgtk2.0-dev libtbb-dev
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install -y libvorbis-dev libxvidcore-dev
sudo apt-get install -y libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install -y x264 v4l-utils
# Some Optional Dependencies
sudo apt-get install -y libprotobuf-dev protobuf-compiler
sudo apt-get install -y libgoogle-glog-dev libgflags-dev
sudo apt-get install -y libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
In the process of installing the above dependent package, there may be some errors in . Here I will list the problems I encountered and give the solutions error 1:
E: Unable to locate package libjasper-dev
Implementation:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update
Just install the dependency package again
error 2:
E: Unable to locate package libgstreamer0.10-dev
Implementation:
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
Step 2: Install OpenCV 4.2.0 & OpenCV Contrib 4.2.0
OpenCV 4.2.0:
https://github.com/opencv/opencv/releases/tag/4.2.0
OpenCV Contib 4.2.0:
https://github.com/opencv/opencv_contrib/releases/tag/4.2.0
If you save the two compressed packages to /home/user name/opencv4.2/
, unzip them
In addition, you need ippicv when compiling_ 2019_ lnx_ intel64_ general_ 20180723. Tgz
this file is very slow to download. Here is a link to download and configure by referring to steps 1 and 2
For example, I put the downloaded file in the opencv4.2
folder and changed it to "/ home/username/opencv4.2/
Finally, the directory structure is as follows:
/home/username/opencv4.2/
opencv-4.2.0/
opencv_contrib-4.2.0/
ippicv_2019_lnx_intel64_general_20180723.tgz
Step 3: building libraries with cmake
Implementation:
cd /home/username/opencv4.2/opencv-4.2.0
mkdir build
cd build
Implementation:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D CUDA_ARCH_BIN='7.5'
-D WITH_CUDA=ON
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/username/opencv4.2/opencv_contrib-4.2.0/modules \
-D BUILD_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=YES ..
There are two aspects that need to be modified in the above steps
CUDA_ARCH_BIN='7.5'
Because opencv 4.2 supports CUDA to accelerate the calculation of DNN module, CUDA is configured here; Before that, you need to configure the driver and CUDA of NVIDIA graphics card
Among them, 7.5
refers to the computing power of the graphics card, my GTX 1660ti, and the corresponding computing power is 7.5
Here is a link for reference: nvida CUDA graphics card computing capacity table
The second place that needs to be modified is:
OPENCV_EXTRA_MODULES_PATH=/home/username/opencv4.2/opencv_contrib-4.2.0/modules
This is modified to your own OpenCV_ Location of contrib-4.2.0/modules
Step 4: building libraries with make
To view the number of CPU cores:
nproc
For example, my CPU core number is 12, and the execution time is 12
cd /home/username/opencv4.2/build
make -j12
Wait for a while, and then configuration done
appears
Implementation:
sudo make install
After waiting for a while again, execute:
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
Step 5: modify opencv4. PC
file
If the above configuration is successful, a pkgconfig
folder will appear in the /usr/local/lib/
folder, in which there is a OpenCV. PC
file. The contents are as follows:
# Package Information for pkg-config
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv4/opencv2
includedir_new=${prefix}/include/opencv4
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.2.0
Libs: -L${exec_prefix}/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cudabgsegm -lopencv_cudafeatures2d -lopencv_cudaobjdetect -lopencv_cudastereo -lopencv_cvv -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_cudacodec -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_cudaoptflow -lopencv_optflow -lopencv_cudalegacy -lopencv_videoio -lopencv_cudawarping -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_cudaimgproc -lopencv_cudafilters -lopencv_imgproc -lopencv_cudaarithm -lopencv_core -lopencv_cudev
Libs.private: -lm -lpthread -L/usr/lib/x86_64-linux-gnu -lGL -lGLU -lcudart_static -ldl -lrt -lnppc -lnppial -lnppicc -lnppicom -lnppidei -lnppif -lnppig -lnppim -lnppist -lnppisu -lnppitc -lnpps -lcublas -lcudnn -lcufft -L-L/usr/local/cuda -llib64 -L-L/usr/lib -lx86_64-linux-gnu
Cflags: -I${includedir_old} -I${includedir_new}
note: the sixth line needs to be modified to:
includedir_old=${prefix}/include/opencv4/opencv2
If it is not generated automatically, you can try to create a new file, copy the above content into it, and continue to the next step
Step 6: add PKG to . Bashrc
file_ CONFIG_ PATH
. Bashrc
file_ CONFIG_ PATHImplementation:
sudo gedit ~/.bashrc
Add at the end of the file:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
After exiting, execute
source ~/.bashrc
# Determine when the path is added successfully and return :/usr/local/lib/pkgconfig
echo $PKG_CONFIG_PATH
Step 7: verification with C + + code
Create a test. CPP
file in any directory and add the following content:
#include "opencv.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
cout << "OpenCV version : " << CV_VERSION << endl;
cout << "Major version : " << CV_MAJOR_VERSION << endl;
cout << "Minor version : " << CV_MINOR_VERSION << endl;
cout << "Subminor version : " << CV_SUBMINOR_VERSION << endl;
}
Use the command line to execute under its folder:
# Compile the test.cpp program and generate the executable file
g++ -std=c++11 test.cpp `pkg-config --libs --cflags opencv4` -o result
# Execute executable files
./result
The output of the following indicates that the configuration is successful
OpenCV version : 4.2.0
Major version : 4
Minor version : 2
Subminor version : 0