Linux无管理权限dense_flow光流提取工具安装

如果编译不好的,可以直接在此处下载。

更新!!!

在安装opencv时,cmake -D后面不要有空格,不然后报找不到源文件错误。而且cmake后面加两个…不然会说找不到Cmakelist.txt

cd opencv3.1.0
mkdir build && cd build
cmake ../
	  -DCMAKE_INSTALL_PREFIX=/app/opencv 
      -DOPENCV_EXTRA_MODULES=../opencv3.1.0/opencv_contrib-3.1.0/modules 
      -DWITH_CUDA=ON .. \开启GPU加速功能
      -DWITH_TBB=ON ..
      -DCUDA_ARCH_BIN="7.0" \这个需要根据显卡的算力进行设置,可在https://developer.nvidia.com/cuda-gpus查看
make -j64
make install

CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: CUDA_nppi_LIBRARY (ADVANCED)
在这里插入图片描述
编译选项加上-DCMAKE_BUILD_TYPE=Release -DCUDA_nppi_LIBRARY=true即可


最近毕设在所基于two-stream的人体行为识别,需要用到光流提取工具dense_flow,由于之前没接触过Linux,捣鼓了三四天才把它装好。下面记录一下在安装dense_flow中出现的一些问题以及解决的方案。
dense_flow工具:https://github.com/yjxiong/dense_flow

1、新建python环境(已有环境可以跳过)

在服务器上跑项目,因此我直接在我的目录下新建了一个python环境来进行环境配置。
1、服务器联网状态下输入conda create -n workspace python=3.5(python版本可自己更改,workspace环境名称)。
2、安装好后输入source activate workspace激活环境。
3、安装conda,可以使用国内镜像源
4、配置pip

参考博客:https://blog.csdn.net/qq_37254336/article/details/81988872

2、cmake3.3.2安装

由于我没有管理员权限,因此在安装包时不能使用apt-get安装,只能通过编译安装,因此需要先安装cmake。
1、下载cmake包

wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz

2、安装

tar -zxvf cmake-3.3.2.tar.gz
cd make3.3.2
./bootstrap
./configure --prefix=/app/cmake3.3(自定义安装路径,最好是绝对路径)
make
make install

3、安装完后需要将cmake安装路径写进系统变量

vim ~/.bashrc
export PATH=/app/cmake3.3/bin/:$PATH
source ~/.bashrc

这样cmake就安装好了

4、输入cmake -version检查是否安装成功
在这里插入图片描述
现在就可以用cmake命令来进行opencv的安装啦。

3、opencv3.1.0&opencv_contrib3.1.0

安装在安装opencv时,需要注意一点,opencv和opencv_contrib版本要一致,不然在后面编译时可能会有各种错误,我的版本都是3.1.0。且如果要做视频处理的话,需要有ffmpeg的支持,如果没有的需要去下载编译安装。(一定要先装ffmpeg再装opencv,不然后面opencv会无法读取视频,血的教训

3.1 ffmpeg安装

1、 手动下载地址:https://git.ffmpeg.org/ffmpeg.git

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd source_directory
./configure --prefix=/app/ffmpeg --enable-nonfree --enable-pic --enable-shared
make
make install

–prefix自己的安装路径,后面三个必须要有,使用-fPIC为后面opencv动态链接库做准备。
2、环境变量

vim ~/.bashrc
export PATH=/app/ffmpeg/bin/:$PATH
export LD_LIBRARY_PATH=/app/ffmpeg/lib/:$LD_LIBRARY_PATH
source ~/.bashrc

3、检查安装是否成功

$ ffmpeg --version
ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-28)
configuration: --prefix=/SISDC_GPFS/Home_SE/kongj-jnu/wangsq-jnu/lsw/app/ffmpeg --enable-pic --enable-shared --enable-nonfree --disable-x86asm --enable-gpl --enable-swscale
libavutil      56. 31.100 / 56. 31.100
libavcodec     58. 54.100 / 58. 54.100
libavformat    58. 29.100 / 58. 29.100
libavdevice    58.  8.100 / 58.  8.100
libavfilter     7. 57.100 /  7. 57.100
libswscale      5.  5.100 /  5.  5.100
libswresample   3.  5.100 /  3.  5.100
libpostproc    55.  5.100 / 55.  5.100

注意:有时候无法安装ffplay等程序,需要找到opencv下的config.mak文件,去掉CONFIG_FFPLAY=yes前面的注释符号“!”后,再编译。

3.2 opencv+opencv_contrib

1、下载
opencv库:https://opencv.org/releases.html
opencv_contrib库:https://github.com/opencv/opencv_contrib/tree/3.1.0
解压会将opencv_contrib解压到opencv目录中

cd opencv3.1.0
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/app/opencv 
      -DOPENCV_EXTRA_MODULES=../opencv3.1.0/opencv_contrib-3.1.0/modules 
      -DWITH_CUDA=ON .. \开启GPU加速功能
      -DWITH_TBB=ON ..
      -DCUDA_ARCH_BIN="7.0" \这个需要根据显卡的算力进行设置,可在https://developer.nvidia.com/cuda-gpus查看
make -j64
make install

OPENCV_EXTRA_MODULES是opencv_contrib下的modules路径,CMAKE_INSTALL_PREFIX自定义的opencv安装路径。
注意:如果要用GPU提取光流的话,在编译opencv时需要将WITH_CUDA设置为ON,同时CUDA_ARCH_BIN要根据显卡的算力进行设置,否则后面提取的时候会出现GPU、CUDA等错误!

安装过程出现以下错误:ippicv_linux_20151201无法安装
在这里插入图片描述
由于墙的原因,无法下载ippicv_linux_20151201.tgz,因此自己去下载把它放在linux-**目录下,我的路径如下。

/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e

然后重新编译,出现Build files have been written to…即编译成功。
在这里插入图片描述Make时,由于动态链接出错
relocation R_X86_64_32 against `.rodata’ can not be used when making a shared object;
在这里插入图片描述在安装ffmpeg时就说过,需要加上编译选项-fPCI,同理opencv安装也需要加上-fPCI选项,在opencv-3.1.0下的CmakeLists.txt中加一行add_compile_options(-fPIC),重新编译,安装,成功。

参考:https://blog.csdn.net/qq_35781447/article/details/103277509

4、libzip安装

在dense_flow的ReadMe中说了,需要依赖包libzip,因此我去https://libzip.org/download/下载了libzip-1.6.1,接下来就是对libzip的安装
mkdir build && cd build
cmake --prefix=/app/libzip1.6(自定义安装路径)
make
make install
这时在/app/libzip1.6下会有以下四个文件夹
在这里插入图片描述
但是到这一步还没结束,虽然已经安装好了,但是系统并不知道你装在哪儿,因此需要将安装路径写进系统变量PATH中。
vim ~/.bashrc
export PATH=/app/libzip1.6/lib64/pkgconfig/:$PATH
source ~/.bashrc
到此libzip就安装好了。

5、dense_flow

在安装dense_flow时,按照给出的安装步骤

cd dense_flow
mkdir build && cd build
cmake ..
make -j

boost python3依赖安装

参考链接:https://www.cnblogs.com/freeweb/p/9209362.html

1、cmake出现未找到boost Libraries,这才想起来未安装boost,去官网下载结果都是forbidden,忘记我是在哪儿找到的了,下载了一个1.66.0版本。

2、安装成功后,满心欢喜准备去安装dense_flow时,结果又失败了,这次是未找到boost_python库。

我去找了boost/lib下找到了libboostpython3,百度了半天不得其解,后来去看了dense_flow下的CMakeLists文件,发现它的findPackage(Boost python),也就是说它要找的是libboostpython库,但是我安装的是python3,所以说将python改成python3即可。

findPackage(Boost python)
改为:findPackage(Boost python3)

5、测试

./extract_gpu -f=test.avi -x=tmp/flow_x -y=tmp/flow_y -i=tmp/image -b=20 -t=1 -d=0 -s=1 -o=dir`

6、总结

Linux下无权限安装各种包,首先需要下载相应源码,然后需要设置–prefix自定义的安装路径,编译安装完成之后需要将run路径和库lib路径加入到环境变量中,像opencv等动态链接库时还需要将相应的.pc文件加入LD_LIBRARY_PATH中。

安装这个dense_flow,每次以为快要结束了结果又有新的问题出现。主要是各种包之间的依赖关系以及环境变量的配置,都会导致安装失败。当错误出现了,首先去看看哪里错了,很多信息都可以在配置文件中看到。当然还有一些问题是因为版本不匹配造成的问题,这种问题百度上有很多,基本上都可以解决。

希望这篇文章能帮到大家,欢迎大家来交流。
`

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃头嘤嘤魔

感谢厚爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值