我已经在Ubuntu 18.04机器上编译了opencv 4和Cuda 9.2。我尝试使用我的应用程序中经常使用的OpenCV头文件测试示例代码。使用nvcc进行编译时,我得到以下信息:
/usr/local/cuda/bin/nvcc -o saxpy saxpy.cu --std=c++11 -I /opt/sensen/include/ `pkg-config opencv --cflags --libs`
/opt/sensen/include/opencv2/core/types_c.h(1359): error: no suitable constructor exists to convert from "int" to "CvSlice"
/opt/sensen/include/opencv2/core/types_c.h(1359): error: expected a ")"
2 errors detected in the compilation of "/tmp/tmpxft_00004bc8_00000000-8_saxpy.cpp1.ii".
还有其他人遇到过这个问题吗?任何建议表示赞赏。
答案 0 :(得分:0)
我和@ mandar-sovani有同样的问题。
我正在使用Ubuntu 14.04
和OpenCV 3.4.3
。我对此问题的解决方案:检入您的cuda代码(.cu
个文件),其中哪个#include
预处理程序指令正在添加OpenCV标头。然后以某种方式修改您的代码,以避免在您的cuda代码(.cu
文件)中包含上述标头。
注意:感谢@talonmies对解决方案的深入了解。
答案 1 :(得分:-1)
福尔摩斯,尝试用以下代码替换该奇怪的代码块:
CV_INLINE CvSlice cvSlice( int start, int end )
{
CvSlice slice = { start, end };
return slice;
}
为我工作! (在Visual Studio 2017上)