1. 下载opencv源码和对应版本的opencv_contrib源码
opencv-github地址
https://github.com/opencv/opencv/releases
opencv_contrib-github地址
https://github.com/opencv/opencv_contrib
2. 下载CMake
CMake官方网站下载
https://cmake.org/download/
3. 使用CMake-gui图形化界面编译opencv
建议先在opencv目录下新建build目录

image.png
4. configure后Search
extra:选择opencv_contrib/modules
with_cuda:勾选
5. 再次configure
注意CUDA_TOOLKIT_ROOT_DIR选择正确的CUDA路径,一般是/usr/local/cuda;
千万不要勾选BUILD_CUDA_STUBS
6. Generate生成
7. 在opencv/build目录下打开终端输入make -j
该步骤时间较慢
8. 继续输入sudo make install
本步骤可能会持续2小时
9. 下载IDE,建议选择Clion
Clion官网地址https://www.jetbrains.com/clion/
10. 解压后可直接在bin目录下运行
命令bash clion.sh(可在.bashrc中添加环境变量)
11. 新建c++ 工程
CMakeLists.txt中加入opencv路径

image.png
12. 在Settings中将Toolchains改为CMake编译
选择路径/usr/bin/cmake
13. CMake选项中添加CUDA路径

image.png
14. 最后在使用opencv/gpu/gpu.hpp时注意将命名空间std放在#include上面
测试代码如下
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
#include <opencv2/gpu/gpu.hpp>
int main() {
// std::cout << "Hello, World!" << std::endl;
int num_devices = cv::cuda::getCudaEnabledDeviceCount();
if(num_devices <= 0)
{
std::cerr << "There is no device." << std::endl;
return -1;
}
std::cerr << "getCudaEnabledDeviceCount NUM:" << num_devices << std::endl;
try {
cv::Mat src_host = cv::imread("/home/cyz/CLionProjects/untitled1/1.png", CV_LOAD_IMAGE_GRAYSCALE);
cv::cuda::GpuMat dst, src;
src.upload(src_host);
cv::cuda::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);
cv::Mat result_host;
dst.download(result_host);
cv::imshow("Result", result_host);
cv::waitKey();
}
catch(const cv::Exception& ex)
{
std::cout << "Error: " << ex.what() << std::endl;
}
return 0;
}