一、安装下载所需工具
1.打开终端,输入以下命令来更新软件源:
sudo apt-get update
2.安装wget:
sudo apt-get install wget
3.下载opencv和opencv-contrib包:
wget -O opencv-4.8.0.zip https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip
wget -O opencv-contrib-4.8.0.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.8.0.zip
解压opencv-4.8.0.zip和opencv-contrib-4.8.0.zip,并解压出来的文件放在任意你喜欢的位置。
二、安装opencv依赖包
sudo apt-get install build-essential \
cmake \
git \
pkg-config \
libgtk-3-dev \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
libv4l-dev \
libxvidcore-dev \
libx264-dev \
libjpeg-dev \
libpng-dev \
libtiff-dev \
gfortran \
openexr \
libatlas-base-dev \
python3-dev \
python3-numpy \
libtbb2 \
libtbb-dev \
libdc1394-dev \
libopenexr-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer1.0-dev \
libopencv-highgui-dev
如果以上依赖安装报网络错误可以使用如下指令更换下载源为‘豆瓣源’
sudo add-apt-repository ‘deb http://security.ubuntu.com/ubuntu xenial-security main’
sudo apt update
三、编译opencv
1.首先我们来到第一节最后你喜欢放opencv和opencv-contrib文件夹的那个位置,在当前窗口右键‘在终端打开’,在打开的终端里输入:
mv opencv_contrib-4.8.0 opencv-4.8.0
该指令是将opencv_contrib_4.8.0文件夹放入opencv-4.8.0文件夹下,再执行:
cd opencv-4.8.0
该指令是前往opencv-4.8.0文件夹下,再执行:
mkdir build
cd build
该指令是在当前目录下新建build文件夹,并进入build文件夹下。
2.使用如下指令进行预编译:
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D CMAKE_C_COMPILER=/usr/bin/gcc-11 \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_opencv_python3=ON \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D WITH_TBB=ON \
-D OPENCV_DNN_CUDA=OFF \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D CUDA_ARCH_BIN=8.9 \
-D WITH_CUBLAS=1 \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/ub/opencv-4.8.0/opencv_contrib_4.8.0/modules \
-D CUDNN_LIBRARY=/usr/lib/x86_64-linux-gnu/libcudnn.so.8.9.0 \
-D CUDNN_INCLUDE_DIR=/usr/local/cuda-11.8/targets/x86_64-linux/include \
-D CUDA_CUDA_LIBRARY=/usr/local/cuda-11.8/targets/x86_64-linux/lib/stubs/libcuda.so \
-D WITH_WEBP=OFF \
-D WITH_OPENCL=ON \
-D ETHASHLCL=OFF \
-D ENABLE_CXX11=ON \
-D BUILD_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D WITH_OPENGL=ON \
-D WITH_GSTREAMER=ON \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D BUILD_opencv_python3=ON \
-D BUILD_opencv_python2=OFF \
-D HAVE_opencv_python3=ON ..
此处预编译可能出现相应路径下找不到文件,因此按照自己电脑中cuda和cudnn安装的路径进行更改,其中本人由于安装cudnn时cudnn.h和libcudnn.so.8.9.0两个文件路径不对,因此此处解决方案是将两个文件找到之后,使用如下指令直接拷贝到报错处的目标文件夹下。
sudo cp /usr/include/cudnn.h /usr/local/cuda-11.8/targets/x86_64-linux/include/
因为该拷贝有权限限制,建议使用指令获取权限拷贝。
3.编译
预编译完成之后,使用下方指令查看电脑核数:
nproc
使用下方指令开始加速编译和下载:
sudo make -j24
sudo make install
编译成功如下界面:
再执行:
sudo /bin/bash -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
四、配置环境变量
使用如下指令打开bashrc并对bashrc文件进行编辑并保存。
sudo gedit ~/.bashrc
在打开的.bashrc最后添加如下语句:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:$PKG_CONFIG_PATH
保存并关闭,使用如下指令进行更新:
source ~/.bashrc
五、检查是否安装成功
检查opencv是否安装成功:
pkg-config --modversion opencv4
pkg-config --libs opencv4
打印如下界面,即是安装成功。
也可以使用如下程序对代码进行测试,showPhoto.cpp
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("./chart_yolov4_car_person_v7.png");
imshow("LOVE", img);
waitKey(0);
return 0;
}
编译showPhoto.cpp运行
g++ -o main showPhoto.cpp `pkg-config opencv4 --cflags --libs`
./main