GPI算了计算 https://developer.nvidia.com/cuda-gpus
cmake demo
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_PNG=OFF -DBUILD_TIFF=OFF -DBUILD_TBB=OFF -DBUILD_JPEG=OFF -DBUILD_JASPER=OFF -DBUILD_ZLIB=OFF -DBUILD_EXAMPLES=ON -DBUILD_opencv_java=OFF -DBUILD_opencv_python2=ON -DBUILD_opencv_python3=ON -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_OPENCL=OFF -DWITH_OPENMP=OFF -DWITH_FFMPEG=ON -DWITH_GSTREAMER=ON -DWITH_GSTREAMER_0_10=OFF -DWITH_CUDA=ON -DWITH_GTK=ON -DWITH_VTK=OFF -DWITH_TBB=ON -DWITH_1394=OFF -DWITH_OPENEXR=OFF -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 -DCUDA_ARCH_BIN=6.2 -DCUDA_ARCH_PTX="" -DINSTALL_C_EXAMPLES=OFF -DINSTALL_TESTS=OFF ../
第一步 cuda cudnn安装
cuda安装网上示例很多,重点从cudnn开始。本本测试是cuda10.2+cudnn7.6.5
下载cudnn
https://developer.nvidia.com/rdp/cudnn-archive
下载
先安装 libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb
再安装 libcudnn7-dev_7.6.5.32-1+cuda10.2_amd64
dpkg -i XX.deb
第二步 安装依赖
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libgtk-3-dev libgtk2.0-dev pkg-config
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libopenexr-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install ffmpeg
sudo apt-get install git gfortran
sudo apt-get install libjpeg8-dev libpng12-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libxine2-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install qt5-default libgtk2.0-dev libtbb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install libvorbis-dev libxvidcore-dev
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install x264 v4l-utils
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
sudo apt install libopenblas-base libopenblas-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libgtk3*
简化版系统更新
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential cmake unzip pkg-config
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libv4l-dev libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libatlas-base-dev gfortran
$ sudo apt-get install python3-dev
第三步 安装opencv_contrib.
wget -O opencv_contrib.zip https://hub.fastgit.org/opencv/opencv_contrib/archive/master.zip
将opencv_contrib 中的cudev移到opencv moduels下;去除opencv_contrib 中不需要的库文件如face等
opencv_contrib 官网https://github.com/opencv/opencv_contrib/tree/4.1.2
第四步 cmake make.
cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-master/modules/ ../../opencv-4.1.2/ -DWITH_CUDA=ON -DBUILD_opencv_python3=OFF -DBUILD_opencv_python2=OFF -DBUILD_TESTS=OFF -DWITH_OPENGL=ON ../
编译支持openGL库,
-D WITH_OPENGL=ON -D WITH_GTK_2_X=ON
demo2:支支持python、cuda等
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_C_COMPILER=/usr/bin/gcc \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D WITH_TBB=ON \
-D BUILD_opencv_cudacodec=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=1 \
-D WITH_FFMPEG=ON \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \ #OPENCV_ENABLE_NONFREE
-D OPENCV_PYTHON3_INSTALL_PATH=/home/ubuntu/conda/envs/pytorch/lib/python3.6/site-packages \
-D WITH_NVCUVID=ON \
-D BUILD_opencv_python3=yes \
-D OPENCV_EXTRA_MODULES_PATH=/home/ubuntu/installs/opencv_contrib/modules \
-D PYTHON2_EXECUTABLE=/home/ubuntu/conda/envs/pytorch/bin/python \
-D PYTHON3_EXECUTABLE=/home/ubuntu/conda/envs/pytorch/bin/python \
-D PYTHON_INCLUDE_DIR=/home/ubuntu/conda/envs/pytorch/include/python3.6m \
-D PYTHON_INCLUDE_DIR2=/home/ubuntu/conda/envs/pytorch/include/python3.6m \
-D PYTHON2_LIBRARY=/home/ubuntu/conda/envs/pytorch/lib/libpython3.6m.so \
-D PYTHON3_LIBRARY=/home/ubuntu/conda/envs/pytorch/lib/libpython3.6m.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/home/ubuntu/conda/envs/pytorch/lib/python3.6/site-packages/numpy/core/include \
-D BUILD_EXAMPLES=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=7.5 ..
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \
其中CUDA_ARCH_BIN是GPU的算力等级,根据自己的显卡型号在NVIDIA官网查看。
make -j8
完成编译
make install
安装到系统 ,更新动态库:ldconfig
链接库共享
编译安装完毕之后,为了让你的链接库被系统共享,让编译器发现,需要执行管理命令ldconfig:
sudo ldconfig -v
docker使用注意事项
share GPU Driver with 宿主机
docker run -itd --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all imageIDxxxxxx /bin/bash
测试案例
CUDA加速测试
Python:
测试cv2.cuda_GpuMat()
import numpy as np
import cv2 as cv
npTmp = np.random.random((1024, 1024)).astype(np.float32)
npMat1 = np.stack([npTmp,npTmp],axis=2)
npMat2 = npMat1
cuMat1 = cv.cuda_GpuMat()
cuMat2 = cv.cuda_GpuMat()
cuMat1.upload(npMat1)
cuMat2.upload(npMat2)
C++:
测试cv::cudacodec::createVideoReader()
cd ~/<my_working_directory>/opencv/samples/gpu
g++ -ggdb video_reader.cpp -o video_reader `pkg-config --cflags --libs opencv`
./video_reader test.mp4
测试cv::cudacodec::createVideoWriter()
cd ~/<my_working_directory>/opencv/samples/gpu
g++ -ggdb video_writer.cpp -o video_writer `pkg-config --cflags --libs opencv`
./video_writer test.mp4
参考文章
- https://blog.csdn.net/TracelessLe/article/details/108209710 (重点看)
- https://blog.csdn.net/wq1psa78/article/details/105334859
- https://blog.csdn.net/GungnirsPledge/article/details/108597474
- https://blog.csdn.net/weixin_45617478/article/details/104111789
- opencv编译带cuda
- opencv_contrib安装笔记
- opencv4.2+opencv_contrib编译gpu加速带cuda和CUDnn(二)
- https://blog.csdn.net/weixin_45589062/article/details/104371684–(OPENCV_ENABLE_NONFREE)
- https://blog.csdn.net/sinat_41686583/article/details/114293115
- cvcudacodeccreatevideoreader
- docker启动事项