2016-07-04 69 views
-1

我試圖實現自己的內核中值濾波這樣的僞代碼:如何將OpenCv3.1.0庫包含到CUDA文件(.cu)中?

//main.cpp 
#include "opencv2/opencv.hpp" 
cv::Mat inputMat = cv::imread() 
cudaMedianCaller (inputMat, kernelMat) 

//medianFilter.h 
#include "opencv2/opencv.hpp" 
cudaMedianCaller (const cv::Mat& inputMat, cv::Mat& kernelMat); 

//medianFilter.cu 
cudaMedianCaller (const cv::Mat& inputMat, cv::Mat& kernelMat) 
{ 
    kernelMedianFilter<<< , >>> (uchar3* d_inputMat, uchar* d_kernelMat) 
} 

__global__ void kernelMedianFilter (uchar3* d_inputMat, uchar* d_kernelMat) 
{ 

} 

我得到編譯錯誤:

C1083:無法打開包含文件: 'opencv2/opencv.hpp':沒有這樣的文件或 目錄

我知道.cu文件與nvcc編譯並且無法編譯OpenCV頭文件。

1)如何將OpenCV3.1.0庫包含到.cu文件中?

回答

2

您不需要在.cu文件中包含OpenCV。您需要一個帶有原始指針和基本數據類型的Caller API作爲參數。

的main.cpp

#include "opencv2/opencv.hpp" 
#include "medianFilter.h" 

int main() { 
    cv::Mat inputMat = cv::imread(); 
    ..... 
    cudaMedianCaller (d_inputMat, d_kernelMat); 
    ..... 
    return 0; 
} 

medianFilter.h

cudaMedianCaller (uchar3* d_inputMat, uchar* d_kernelMat); 

medianFilter.cu

cudaMedianCaller (uchar3* d_inputMat, uchar* d_kernelMat) 
{ 
    kernelMedianFilter<<< , >>> (uchar3* d_inputMat, uchar* d_kernelMat) 
} 

__global__ void kernelMedianFilter (uchar3* d_inputMat, uchar* _kernelMat) 
{ 

} 
+0

非常感謝。我用我的代碼測試你的文件,然後向你報告。 –

相關問題