2016-07-04 27 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

非常感谢。我用我的代码测试你的文件,然后向你报告。 –

相关问题