когда я пытаюсь скомпилировать проект cudastereo я получаю 40 ошибок, как это:OpenCV 3.0.0 альфа с Cuda 6.5, CudaStereo Error (Visual x64 Sutdio 2013)
Error 46 error : calling a __host__ function("fmin<int, float> ") from a __global__ function("cv::cuda::device::stereocsbp::init_data_cost<short, (int)1> ") is not allowed D:\ImageProcessing\GPU\opencv\sources\modules\cudastereo\src\cuda\stereocsbp.cu 219 opencv_cudastereo 1
могли бы вы мне помочь. , кстати, все остальные проекты cuda в opencv успешно компилируются, и это точная функция, которая мне нужна в opencv, которая не компилируется.
Я считаю, что проблема заключается в вызове этих функций:
template<> __device__ __forceinline__ static float pixeldiff<1>(const uchar* left, const uchar* right, float max_data_term)
{
return fmin(::abs((int)*left - *righ), max_data_term);
}
template<> __device__ __forceinline__ static float pixeldiff<3>(const uchar* left, const uchar* right, float max_data_term)
{
float tb = 0.114f * ::abs((int)left[0] - right[0]);
float tg = 0.587f * ::abs((int)left[1] - right[1]);
float tr = 0.299f * ::abs((int)left[2] - right[2]);
return fmin(tr + tg + tb, max_data_term);
}
template<> __device__ __forceinline__ static float pixeldiff<4>(const uchar* left, const uchar* right, float max_data_term)
{
uchar4 l = *((const uchar4*)left);
uchar4 r = *((const uchar4*)right);
float tb = 0.114f * ::abs((int)l.x - r.x);
float tg = 0.587f * ::abs((int)l.y - r.y);
float tr = 0.299f * ::abs((int)l.z - r.z);
return fmin(tr + tg + tb, max_data_term);
}
Вы должны показать свои коды. – Raptor
Это не мой собственный код, его библиотека opencv. проблема в файле stereocsbp.cu. Я ничего не изменил в оригинальной библиотеке Opencv. – Jack
, тогда спросите автора. – Raptor