基础环境python3.7+cuda11.1+ubuntu22.04+cudnn8.1.1
1.非anaconda环境安装python3.7
sudo apt-get update
sudo apt-get upgrade
sudo apt install build-essential libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev zlib1g-dev openssl curl libsqlite3-dev -y
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
tar -xvf Python-3.7.3.tgz
cd Python-3.7.3
./configure --enable-loadable-sqlite-extensions --prefix=/usr/local/ --enable-shared CFLAGS=-fPIC
make
make install
ln -s /usr/local/bin/pip3 /usr/bin/pip
ln -s /usr/local/bin/python3 /usr/bin/python
终端非anaconda的base环境下输入命令python,显示python3.7版本就行。
2.安装依赖
sudo apt-get install build-essential cmake git unzip pkg-config -y
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev -y
sudo apt-get install libgtk2.0-dev libcanberra-gtk* -y
sudo apt-get install python3-dev python3-numpy python3-pip -y
sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev -y
sudo apt-get install libtbb2-dev libtbb-dev libdc1394-22-dev -y
sudo apt-get install libv4l-dev v4l-utils -y
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev -y
sudo apt-get install libavresample-dev libvorbis-dev libxine2-dev -y
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev -y
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev -y
sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev -y
sudo apt-get install liblapack-dev libeigen3-dev gfortran -y
sudo apt-get install libhdf5-dev protobuf-compiler -y
sudo apt-get install libprotobuf-dev libgoogle-glog-dev libgflags-dev -y
建议使用sudo aptitude install XXX
安装。
3.建立软链接
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
4.下载opencv-4.4.0,opencv_contrib-4.4.0
opencv下载地址:https://opencv.org/releases/,找到4.4.0版本点击“sources”
opencv_contrib下载:wget https://github.com/opencv/opencv_contrib/archive/4.4.0.zip
或直接搜这个网址
5.解压合并
分别解压后将opencv_contrib-4.4.0移动到opencv-4.4.0下:
mv opencv_contrib-4.4.0 opencv-4.4.0
6.构建编译
注意这里必须要退出ananconda环境,即”base“,conda deactivate
只是临时退出,建议禁止自启:
conda config --show | grep auto_activate_base
显示True,设为False:
conda config --set auto_activate_base False
之后
cd opencv-4.4.0
mkdir build
cd build
构建:(这里开始若出了bug看看文章最后有没有和你相同的情况)
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D WITH_EIGEN=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_DNN_CUDA=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D CUDA_ARCH_BIN=8.0 \
-D BUILD_opencv_python3=ON \
-D BUILD_opencv_python2=ON \
-D WITH_CUBLAS=ON \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D CUDA_GENERATION=Pascal \
-D BUILD_EXAMPLES=OFF ..
若成功则显示:
查看cpu最大线程数:
nproc
我的显示16,开始编译:
make -j16
或者直接:
make -j$(nproc)
能到100%就说明成功:
7.安装
sudo make install
成功最后显示:
接着:
sudo ldconfig
sudo apt-get update
8.验证
9.碰到的一些bug:(编译出问题可以查看opencv-4.4.0/CMakeFiles/CMakeError.log)
1.tbb库文件找不到的问题:tbb_stddef.h,tbb_config.h
等:
一开始装依赖的时候我好像输入的是sudo apt-get install libtbb2 libtbb-dev
(上面已改)然后有些头文件没装上,后面去github上搜tbb随便点一个,去他的include/tbb下找然后放到/usr/include/tbb
下,不过还是会报错,之后我直接搜sudo apt search libtbb
,然后装了个libtbb2-dev
就ok了。
2.报错:Build output check failed:Regex: 'argument .* is not valid' Output line: 'cc1: warning: ‘-Werror=’ argument ‘-Werror=non-virtual-dtor’ is not valid for C'
这里是要用gcc-7和g+±7,这个我已经安装并设为默认但还是报错,还需要在CMakeLists.txt顶上添加:
set (CMAKE_C_COMPILER /usr/bin/gcc-7)
set (CMAKE_CXX_COMPILER /usr/bin/g++-7)
若还有其它的bug,就需要你查查别的博客了,总体上来说比较麻烦,折腾了一天…