在TX1上配置TLD算法环境遇到的问题(一)

我使用的是Jalong_Ma的博客进行安装,网站是http://blog.csdn.net/Jalong_Ma/article/details/52743923

值得注意的是,使用jetpack进行安装,到了下图这一步时,一定要想清楚自己需要什么,不要安装太多没用的东西,毕竟TX1上只有14G的空间,安装了没用的卸载不方便,也卸不干净,重装系统又要费时间。我使用默认安装,安装完只剩4.1G,导致又要重装系统。(图片来自http://blog.csdn.net/Jalong_Ma/article/details/52743923)

在TX1上配置TLD算法环境遇到的问题(一)_第1张图片

尤其是opencv,默认的版本是2.4.13,版本过低,如果安装多版本opencv,则会导致其他问题,所以可以不安装opencv。

于是第二次Jetpack安装时,我没有安装opencv,但在安装opencv3.1时出现了下面的错误。

在TX1上配置TLD算法环境遇到的问题(一)_第2张图片

/home/ubuntu/Downloads/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState’ does not name a type
         NppiGraphcutState* pState;
         ^
In file included from /home/ubuntu/Downloads/opencv-3.1.0/build/modules/cudalegacy/precomp.hpp:75:0:
/home/ubuntu/Downloads/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp: In constructor ‘{anonymous}::NppiGraphcutStateHandler::NppiGraphcutStateHandler(NppiSize, Npp8u*, {anonymous}::init_func_t)’:
/home/ubuntu/Downloads/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:127:39: error: ‘pState’ was not declared in this scope
             nppSafeCall( func(sznpp, &pState, pDeviceMem) );
                                       ^
/home/ubuntu/Downloads/opencv-3.1.0/modules/core/include/opencv2/core/private.cuda.hpp:165:52: note: in definition of macro ‘nppSafeCall’
 #define nppSafeCall(expr)  cv::cuda::checkNppError(expr, __FILE__, __LINE__, CV_Func)
                                                    ^
/home/ubuntu/Downloads/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp: In destructor ‘{anonymous}::NppiGraphcutStateHandler::~NppiGraphcutStateHandler()’:
/home/ubuntu/Downloads/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:132:43: error: ‘pState’ was not declared in this scope
             nppSafeCall( nppiGraphcutFree(pState) );
                                           ^
/home/ubuntu/Downloads/opencv-3.1.0/modules/core/include/opencv2/core/private.cuda.hpp:165:52: note: in definition of macro ‘nppSafeCall’
 #define nppSafeCall(expr)  cv::cuda::checkNppError(expr, __FILE__, __LINE__, CV_Func)
                                                    ^
/home/ubuntu/Downloads/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:132:49: error: ‘nppiGraphcutFree’ was not declared in this scope
             nppSafeCall( nppiGraphcutFree(pState) );

原因是opencv3.1的部分和CUDA8.0不兼容,此时,可以利用利用网上的方法进行修改

进入opencv-3.1.0/modules/cudalegacy/src/目录,修改graphcuts.cpp文件,将:

#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
  • 1
  • 2
  • 1
  • 2

修改为

#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)  || (CUDART_VERSION >= 8000)
  • 1
  • 2
  • 1
  • 2

重新编译opencv3.1的包,即可完成opencv3.1的安装,这样,就实现了TX1里只有一个我们需要的版本的opencv。


注:安装系统之后,home里的cuda-l4t文件可以删掉!这样可以节约内存。

你可能感兴趣的:(在TX1上配置TLD算法环境遇到的问题(一))