2016-02-13 154 views
1

在我的tk1板上全新安裝jetpack之後,我發現自己無法使用opencv的gpu調用。我使用OpenCV的2.4.12無法使用opencv cuda調用

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的輸出

[email protected]:~$ 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; 
} 
+3

「CUDA驅動程序版本不足以滿足CUDA運行時版本」的含義。你有一個不匹配的環境。我的猜測是,當你安裝了更新的CUDA工具包版本(比如7.0)時,你建立了你的OpenCV,然後當你安裝Jetpack時,事情恢復(CUDA驅動,CUDA運行時,CUDA工具包)到6.5版本。這意味着任何針對CUDA 7.0構建的庫(比如OpenCV庫)都不再可用。我的猜測是你需要根據你當前的環境重建OpenCV。 –

+0

謝謝,是它 – Zypps987

+0

@ Zypps987:請將您的解決方案添加爲答案 – talonmies

回答

1

添加CW回答不了這一關的解答列表。根據OP的評論,這個建議似乎導致了一個解決方案:

「CUDA驅動程序版本不足以支持CUDA運行時版本」意思就是它所說的。你有一個不匹配的環境。

我的猜測是,你建立你的OpenCV當您安裝了一個較新的CUDA工具包版本(比如7.0),然後當你安裝了噴氣揹包,事情恢復(CUDA驅動程序,CUDA運行時,CUDA工具包)至有效的6.5版本。這意味着任何針對CUDA 7.0構建的庫(比如OpenCV庫)都不再可用。

我的猜測是,你需要重建OpenCV對你當前的環境。