前提条件是安装好了cuda和cudnn
点击下载:
opencv_contrib4.5.0
opencv 4.5.0
解压重命名后
进入opencv目录,创建build目录
“CUDA_ARCH_BIN= ?” 这里要根据显卡查询一下,我的cuda是11,显卡1650,所以是7.5
查询方法1:
查询链接:https://developer.nvidia.com/cuda-gpus
查询方法2:
import torch
if torch.cuda.is_available():
major, minor = torch.cuda.get_device_capability()
arch_bin = f"{major}.{minor}"
print(arch_bin)
else:
print("CUDA is not available.")
安装依赖:
apt-get update
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 \
libtbb2 libtbb-dev libdc1394-22-dev libopenblas-dev \
liblapacke-dev libhdf5-dev libprotobuf-dev protobuf-compiler
注意路径更改:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D WITH_CUDEV=ON \
-D WITH_GTK_2_X=ON \
-D WITH_NVCUVID=ON \
-D CUDA_ARCH_BIN=7.5 \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D WITH_OPENGL=ON \
-D WITH_FFMPEG=ON \
-D OPENCV_GENERATE_PKGCONFIG=YES \
..
踩坑1:
认真观察会发现
打开看到的就是未下载的文件,需要下载后移动到对应位置。
压缩文件还能科学上网手动下载,但是.i文件我不知道怎么下载,因为按照网页访问会直接列出内容,我复制后,按照上面给的文件进行保存,又来一遍发现还是提示我未下载。最后是使用别人下载好的 .cache 文件,才编译成功的。
如果不缺文件的话就没有这个sh脚本。
踩坑2:
没加环境变量
使用方法二就成功了。
# 方法一
# 临时生效(仅当前终端)
# bash
# 复制
# # 假设库路径为 /usr/local/lib
# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
#方法二
# 永久生效
# bash
# 复制
# # 创建配置文件
# sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
# # 更新动态链接器缓存
# sudo ldconfig
开始编译:
make -j8
安装
make install
创建配置文件
sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
更新动态链接器缓存
ldconfig