Ubuntu 非root 权限(普通用户)安装OpenCV 2.4.9
来源:互联网 发布:学生证办理 淘宝 编辑:程序博客网 时间:2024/06/06 04:52
实验室GPU服务器一般使用者是没有Root权限的,也就是只是普通用户权限。我们实验室服务器安装的Opencv都是最新的OpenCV 3.2版本,而我要跑的程序(GPU提取视频光流特征)是依赖于Cuda版本的OpenCV2.4 。因此我需要在我的目录下安装OpenCV 2.4 版本。经过查看,服务器已经安装了Cuda 8.0. GPU 为NVIDIA的TiTan.
以下是我的安装过程
1. 首先在终端运行下列命令进行必要的编译环境安装。
$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
2.下载openCV 2.4.9 并且解压
3. 进入解压目录
$ cd opencv 2.4.9
4. 进行外部编译,也就是需要建立 build 文件夹,并进入build 文件夹
$ mkdir build
$ cd build
5. 重点来了,Cmake 目录默认是在 /usr/local,但是非root 用户没有write权限,后面make 的时候会报错,所以我们要改变生成的库文件的路径,我想把opencv 2.4 安装在我的home文件夹下,因此下面cmake 安装路径为 /home/lixinhui/local/opencv2(个人设置)
$ cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/home/lixinhui/local/opencv2 -D
如果报错:
nvcc fatal : Unsupported gpu architecture 'compute_11'
CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):
Error generating
是因为Titan显卡(包括GTX 900系列)的架构是比较新的Maxwell架构,应该在cmake 参数命令中增加
-D CUDA_GENERATION=Kepler
虽然Kepler架构是Maxwell架构的上一代,但是这样配置也可以成功。
也就是说上面一句话应该改为:
$ cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/home/lixinhui/local/opencv2 -D CUDA_GENERATION=Kepler ..
6. $ make -j4
此处会出现各种错误。我遇到的有
错误 1
/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51):error:a storageclass isnot allowedin anexplicit specialization
解决方法 :
打开错误的文件:
$ vi /home/lixinhui/opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp
将其中template声明中的所有static全部删除。也就是把(template<> static inline 改为template<> inline ):
错误原因 : OpenCV 2.4版本与Cuda 衔接有bug
错误 2
/home/lixinhui/opencv-2.4.9/modules/cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat
^
/home/lixinhui/opencv-2.4.9/modules/cudalegacy/src/graphcuts.cpp:135:18: error: ‘NppiGraphcutState’ does not name a type
operator NppiGraphcutState*()
^
/home/lixinhui/opencv-2.4.9/modules/cudalegacy/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState’ does not name a type
NppiGraphcutState* pState;
解决方法:
$ vi /home/lixinhui/opencv-2.4.9/modules/cudalegacy/src/graphcuts.cpp
将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
重新make ,编译成功【100%】,此时可以在目标路径 比如我的是 /home/lixinhui/local/opencv2下看到
这个时候我们就可以用openCV 的头文件和动态库文件了。
当然,如果想把opencv2.4 的路径设置成你的环境变量,需要修改 .bashrc 文件。
我的目的是想把Opencv的动态库链接到我的程序中,下一篇讲解如何通过动态链接的方式,即修改我的程序的 CMakeLists.txt 的文件 ,使其不链接到系统默认的Opencv3.2 ,而是链接到我home下的Opencv 2.4.
参考博客 :
1. http://www.linuxidc.com/wap.aspx?nid=99753&cid=5&sp=459
2. http://blog.csdn.net/allyli0022/article/details/62859290
3. http://blog.h5min.cn/JK198310/article/details/73718600
- Ubuntu 非root 权限(普通用户)安装OpenCV 2.4.9
- Ubuntu 普通用户 获得 root权限
- 普通用户(非root非postgres)源码安装postgresql
- 六步完成vim74安装(非root用户|普通用户)
- Ubuntu 普通用户提升到root权限
- 非root用户安装OpenCV-2.4.13
- 普通用户---root权限
- 普通用户授予root权限
- ubuntu普通用户变为root用户后,只能guest身份进系统(linux的权限问题)
- Ubuntu下如何将普通用户提升到root权限
- Ubuntu下如何将普通用户提升到root权限
- Ubuntu下如何将普通用户提升到root权限
- Ubuntu/CentOS下如何将普通用户提升到root权限
- Ubuntu下如何将普通用户提升到root权限
- Ubuntu下如何将普通用户提升到root权限
- Ubuntu下如何将普通用户提升到root权限
- Ubuntu下将普通用户提升到root权限
- Ubuntu下如何将普通用户提升到root权限
- Sublime插件记录
- UML的九种图例详解
- 【mybatis】mybatis数据源源码剖析(JNDI、POOLED、UNPOOLED)
- Maven 生命周期
- 洛谷1082 同余方程
- Ubuntu 非root 权限(普通用户)安装OpenCV 2.4.9
- java基本类型、对应的包装类型(自动拆箱和自动装箱)
- 半饱是一种生活的的态度
- Establishing SSL connection without server's identity verification is not recommended. According to
- 已知N!之后有几个0,求N
- Qt Creator:Webkit实践
- 最全面的常用正则表达式大全 zz
- Learning Tensorflow (3)
- treelist绑定两个表格