编译opencv2.4.11时出现错误:error: ‘NppiGraphcutState’ has not been declared

安装cuda之后再安装opencv时出现错误:

 /data/opencv-2.4.11/modules/gpu/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared  
      typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat ^ /data/opencv-2.4.11/modules/gpu/src/graphcuts.cpp:135:18: error: ‘NppiGraphcutState’ does not name a type operator NppiGraphcutState*() ^ /data/opencv-2.4.11/modules/gpu/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState’ does not name a type NppiGraphcutState* pState; 


cuda8.0较新,opencv-2.4.11较早,要编译通过需要修改源码:

修改/data/opencv-2.4.11/modules/gpu/src/graphcuts.cpp

将  

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)   

改为  

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000) 

重新编译即可。

点赞