cuda10.2+opencv4.1.2编译cuda版本opencv

opencv官网

GPI算了计算 https://developer.nvidia.com/cuda-gpus

nvidia显卡支持的编解码类型

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

参考文章

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值