CUDA版本OpenCV安装
CUDA版本的OpenCV安装主要参考这里,写的已经很很详细了,不再赘述。
不过有两点需要注意:
opencv
和opencv_contrib
的版本可以下载最新的,比如4.5.4,cmake
命令里注意替换版本号
- 一般我们不希望自己编译的版本安装在系统全局,因此,
cmake
的CMAKE_INSTALL_PREFIX
参数需要更改,我的习惯是在home里创建libs保存自定义编译的库。
最终的cmake命令示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=~/libs/opencv-4.5.4-cuda/release \ -D WITH_TBB=ON \ -D ENABLE_FAST_MATH=1 \ -D CUDA_FAST_MATH=1 \ -D WITH_CUBLAS=1 \ -D WITH_CUDA=ON \ -D BUILD_opencv_cudacodec=OFF \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D CUDA_ARCH_BIN=6.1 \ -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 \ -D OPENCV_PYTHON3_INSTALL_PATH=~/.virtualenvs/cv/lib/python3.8/site-packages \ -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \ -D OPENCV_EXTRA_MODULES_PATH=~/Downloads/opencv_contrib-4.5.4/modules \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D INSTALL_C_EXAMPLES=OFF \ -D BUILD_EXAMPLES=OFF ..
|
VS Code配置
首先参考官方文档配置C++支持,现在的问题就是,如何配置让vs code能自动识别我们自定义编译的opencv版本。
新建cmake项目,CMakeList.txt文件示例如下:
1 2 3 4 5 6 7 8 9 10 11
| cmake_minimum_required(VERSION 2.8)
set(CMAKE_BUILD_TYPE "Debug") set(CMAKE_CXX_FLAGS "-std=c++11 -O2")
find_package(OpenCV REQUIRED NO_DEFAULT_PATH PATHS "/home/hp/libs/opencv-4.5.4-cuda/release")
include_directories(${OpenCV_INCLUDE_DIRS}) include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") add_executable(test test.cpp) target_link_libraries(test ${OpenCV_LIBS})
|
注意其中的find_package
命令,添加了REQUIRED NO_DEFAULT_PATH
参数和具体的PATHS
参数。
路径识别与自动补全
vs code settings.json添加如下配置:
1
| "C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json"
|
这样vs code就会使用cmake(编辑CMakeList文件vs code会自动生成)生成的`compile_commands.json‵文件,找到我们自定义配置的opencv路径。
Debug
经过上面的配置,还是无法一键debug,参考官方文档,配置launch.json
文件的program
参数,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| { "version": "0.2.0", "configurations": [ { "name": "g++ - Build and debug active file", "type": "cppdbg", "request": "launch", "program": "${command:cmake.launchTargetPath}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++ build active file", "miDebuggerPath": "/usr/bin/gdb" } ] }
|
至此,vs code就可以自动识别我们自定义编译的opencv,效果如下图:
happy coding~