查看Ubuntu上面已经安装的opencv的版本
pkg-config --modversion opencv
源码编译
- 源码下载, 注意其中的
batch
, 选择一致。
git clone https://github.com/opencv/opencv.git
# 下面的仓库为第三方库,可以根据需要选择
git clone https://github.com/opencv/opencv_contrib.git
openEuler上源码安装
- 安装依赖
sudo dnf install eigen3
sudo dnf install cmake g++
比较简单的编译选项
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PC_FILE_NAME=opencv4.pc \
-D WITH_TBB=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D WITH_CUDA=ON \
-D BUILD_opencv_cudacodec=OFF \
-D WITH_CUDNN=OFF \
-D OPENCV_DNN_CUDA=OFF \
-D CUDA_ARCH_BIN=7.5 \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D WITH_QT=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_FFMPEG=OFF \
-D WITH_OPENCL=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D ENABLE_PRECOMPILED_HEADERS=YES \
-D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \
-D BUILD_EXAMPLES=OFF ..
cmake --build ./ -j
#安装的路径为指定的 CMAKE_INSTALL_PREFIX=/usr/local 路径
cmake --install ./
关于其中的 -j 选项说明
关于-j选项的几点说明:
1. -j后跟的数字表示要使用的最大线程数。CMake会根据系统 cpu 核数和其他限制自动确定实际要使用的线程数。
2. 如果不指定-j,CMake会自动根据系统环境设置默认的线程数。通常等于cpu核数加一。
3. 指定的最大线程数-j值不代表CMake一定会使用指定数量的线程。它会根据项目设置、依赖关系等因素自动调节实际使用的线程数,但不会超过指定的最大值。
4. -j的值设置得太高不一定能提高构建速度,反而可能对I/O造成压力而降低效率。通常设置为cpu核数的1-2倍就可以达到较好的效果。
5. 在多核系统下,合理设置-j值可以充分利用cpu并行能力,提高构建速度。但在单核系统下,设置-j反而可能延长构建时间,推荐省略-j选项让CMake自动判断。
选定视频编解码框架编译到opencv中
安装gstreamer
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
# 检查安装
pkg-config --cflags --libs gstreamer-1.0
安装ffmpeg
sudo apt install ffmpeg
sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavresample-dev
编译配置
cd opencv
mkdir buildcd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D PYTHON_EXECUTABLE=$(which python2) \
-D BUILD_opencv_python2=OFF \
-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 OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ \
-D WITH_GSTREAMER=ON \
-D WITH_FFMPEG=ON \
-D WITH_CUDA=ON \
..
查看已经安装的opencv库的编译选项
import cv2
print(cv2.getBuildInformation())
关于OpenGL的软件包的支持
sudo apt install mesa-utils
glxinfo | grep OpenGL
可以参考的编译脚本
- https://github.com/opencv/opencv/issues/22132