如何使用GPU版本的opencv
ZED或者OpenCV在使用GPU时都需要OpenCV在编译时支持CUDA工具的选项开启,下面是我的cmake命令
此外这里也包含了contrib库的扩展安装,另外安装opencv-arocu后用于3D视觉程序开发
cmake \
-D WITH_CUDA=ON \
-D WITH_VTK=OFF \
-D WITH_MATLAB=OFF \
-D BUILD_DOCS=ON \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_PYTHON3_VERSION=3.5 \
-D PYTHON3_INCLUDE_PATH=/usr/include/python3.5 \
-D PYTHON3_LIBRARIES=/usr/lib/python3.5/config-3.5m-x86_64-linux-gnu/libpython3.5.so \
-D PYTHON3_EXECUTABLE=/usr/bin/python3.5 \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/dist-packages/numpy/core/include/ \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.15/modules/ \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=OFF ..
千万要注意:OpenCV在编译之后要有一个sudo make install -j4的过程(我当时忘了,笑哭)
sudo make install -j4
使用时需要注意
1.如果在项目中使用zed相机,需要注意只有在获取深度图时才需要用到GPU
2.在opencv-GPU的使用过程中需要注意GPUMat和Mat是不相通的,使用GPU时需要独立定义
3.最好是在程序设计时添加编译变量来切换GPU和CPU版本,如ifdef HAVE_CUDA
#ifdef HAVE_CUDA
cv::cuda::GpuMat slMat2cvMatGPU(Mat& input);
#endif // HAVE_CUDA