无法使用opencv cuda调用

时间:2016-02-13 11:53:20

标签: c++ opencv cuda nvidia

在我的tk1板上全新安装了jetpack后,我发现自己无法使用opencv的gpu调用。我正在使用opencv 2.4.12

OpenCV Error: Gpu API call (CUDA driver version is insufficient for CUDA runtime version) in copy, file /hdd/buildbot/slave_jetson_tx_2/35-O4T-L4T-Jetson-L/opencv/modules/dynamicuda/include/opencv2/dynamicuda/dynamicuda.hpp, line 877
Error: /hdd/buildbot/slave_jetson_tx_2/35-O4T-L4T-Jetson-L/opencv/modules/dynamicuda/include/opencv2/dynamicuda/dynamicuda.hpp:877: error: (-217) CUDA driver version is insufficient for CUDA runtime version in function copy

这是nvcc -V

的输出
ubuntu@tegra-ubuntu:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2014 NVIDIA Corporation
Built on Wed_Nov_12_15:57:57_CST_2014
Cuda compilation tools, release 6.5, V6.5.30

的.bashrc

# Add CUDA bin & library paths:
export PATH=/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
# Add CUDA bin & library paths:
export PATH=/usr/local/cuda/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export LD_LIBRARY_PATH=/usr/local/cuda/lib:

注意:我安装cuda 7.0之前和之后都没有安装它我只是用6.5安装了deb文件。 nvcc -V显示我使用6.5但是它可能仍然使用7.0?

这是我正在尝试编译的内容和我使用的编译命令

g++ `pkg-config --cflags opencv` Fix.cpp -o Saliency `pkg-config --libs opencv`

#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/gpu/gpu.hpp"

int main (int argc, char* argv[])
{
    try
    {
        cv::Mat src_host = cv::imread("file.png", CV_LOAD_IMAGE_GRAYSCALE);
        cv::gpu::GpuMat dst, src;
        src.upload(src_host);

        cv::gpu::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);

        cv::Mat result_host(dst);
        cv::imshow("Result", result_host);
        cv::waitKey();
    }
    catch(const cv::Exception& ex)
    {
        std::cout << "Error: " << ex.what() << std::endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

添加CW答案以将其从未答复的列表中删除。根据OP的评论,这个建议似乎已经找到了解决方案:

&#34; CUDA驱动程序版本不足以用于CUDA运行时版本&#34;就是说它的意思。你的环境不匹配。

我的猜测是,当你安装了更新的CUDA工具包版本(比如7.0)时,你构建了你的OpenCV,然后当你安装了jetpack时,还原了(CUDA驱动程序,CUDA运行时,CUDA工具包) 6.5版本。这意味着针对CUDA 7.0构建的任何库(例如,OpenCV库)都不再可用。

我的猜测是你需要针对当前环境重建OpenCV。