后面配置中支持 人脸识别,gstreamer,ffmpeg 等,可根据需要增删配置
准备工作
#卸载
sudo apt purge libopencv*
sudo apt autoremove
sudo apt update
#安装依赖
sudo apt install -y build-essential cmake pkg-config unzip yasm git checkinstall
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libavresample-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev
sudo apt install -y libfaac-dev libmp3lame-dev libvorbis-dev
sudo apt install -y libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt install -y libdc1394-22 libdc1394-22-dev libxine2-dev libv4l-dev v4l-utils
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
cd ~
sudo -H pip3 install -U pip numpy
sudo apt install -y libgtk-3-dev
sudo apt install -y python3-dev python3-pip
sudo apt install -y python3-testresources
sudo apt install -y webp libwebp-dev
sudo apt install -y libopenexr-dev
sudo apt install -y libtbb-dev
sudo apt install -y libatlas-base-dev gfortran
sudo apt install -y libprotobuf-dev protobuf-compiler
sudo apt install -y libgoogle-glog-dev libgflags-dev
sudo apt install -y libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
下载安装
注意项 编译过程中报警,提前解决:
fatal error: Eigen/Core: No such file or directory
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda下自己去看
编译前注意下gcc版本
gcc -v
modules/core/CMakeFiles/opencv_core.dir/build.make:63: recipe for target 'modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat.cu.o' failed
查看对应关系,选择合适的版本
CUDA incompatible with my gcc version - Stack Overflow
升级gcc示例:
# 查看 gcc 版本
gcc --version
# 安装 gcc-8
sudo apt-get update
sudo apt-get install gcc-8 g++-8
# 查看 gcc 版本,这时候还是之前的版本
gcc --version
# 查看 gcc-8 版本,已经有 gcc-8 版本
gcc-8 --version
# 更换默认版本为 gcc-8
# 如果你的 gcc 版本为 7,若不为 7,将其替换成别的版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8
# 选择 gcc-8 对应的数字
sudo update-alternatives --config gcc
# 再次查看 gcc 版本,gcc 版本为 8
gcc -version
查看CUDA_ARCH_BIN 版本号 只写一个 461 是7.2 511是8.7
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
vgg_generated*下载不动
/opencv_contrib-4.1.1/modules/xfeatures2d/cmake 下两个文件,把
https://raw.githubusercontent.com/改为:https://gitclone.com/raw.githubusercontent.com
有时候face_landmark_model.dat还是下载不下来,重新cmake
cd
mkdir opencv
cd opencv
wget https://github.com/opencv/opencv/archive/refs/tags/4.5.4.zip
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.4.zip
#解压
cd opencv-4.5.4
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_opencv_python3=ON \
-D WITH_GSTREAMER=ON \
-D WITH_FFMPEG=ON \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.4 \
-D WITH_TBB=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D WITH_CUDA=ON \
-D BUILD_opencv_cudacodec=OFF \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN="7.2" \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.4/modules \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..
make -j4
sudo make install