Ubuntu16.04+opencv4.1.0 dense_flow配置过程记录

GitHub参考:https://github.com/yjxiong/dense_flow/blob/opencv-3.1/README.md
1.下载opencv 4.1.0 和Opencv_contrib

wget -O OpenCV-4.1.0.zip wget https://github.com/opencv/opencv/archive/4.1.0.zip 
unzip OpenCV-4.1.0.zip
wget -O OpenCV_contrib-4.1.0.zip https://github.com/opencv/opencv_contrib/archive/4.1.0.zip
unzip OpenCV_contrib-4.1.0.zip

2.安装OpenCV 4.1.0

cd opencv-4.1.0
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D WITH_CUDA=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.0/modules/ -D WITH_TBB=ON -D BUILD_opencv_cnn_3dobj=OFF -D BUILD_opencv_dnn=OFF -D BUILD_opencv_dnn_modern=OFF -D BUILD_opencv_dnns_easily_fooled=OFF -D OPENCV_ENABLE_NONFREE=ON -D CUDA_GENERATION=Kepler ..
make -j
sudo make install

我遇到的问题:

  • Unsupported gpu architecture ‘compute_20’ 解决方法
  • 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: 解决方法
  • 由于在虚拟机里操作,在执行make -j时虚拟机一直黑屏闪退,后来改用make -j4(参数大小根据实际情况调整)

3.安装LibZip:apt-get install libzip-dev
4.下载编译dense_flow:

git clone --recursive http://github.com/yjxiong/dense_flow
cd dense_flow/
mkdir build && cd build

得到的dense_flow文件夹应该和opencv4.1.0平级
编译:

OpenCV_DIR=../../opencv-4.1.0/build/  cmake ..
make -j4

我遇到的问题:

  • /home/abc/dense_flow/src/dense_flow_gpu.cpp:5:35: fatal error: opencv2/xfeatures2d.hpp: No such file or directory
    compilation terminated.
    CMakeFiles/denseflow.dir/build.make:110: recipe for target ‘CMakeFiles/denseflow.dir/src/dense_flow_gpu.cpp.o’ failed
    make[2]: *** [CMakeFiles/denseflow.dir/src/dense_flow_gpu.cpp.o] Error 1
    make[2]: *** Waiting for unfinished jobs…
    /home/abc/dense_flow/src/dense_flow.cpp:6:31: fatal error: opencv2/optflow.hpp: No such file or directory
    compilation terminated.
    CMakeFiles/denseflow.dir/build.make:86: recipe for target ‘CMakeFiles/denseflow.dir/src/dense_flow.cpp.o’ failed
    make[2]: *** [CMakeFiles/denseflow.dir/src/dense_flow.cpp.o] Error 1
    /home/abc/dense_flow/src/dense_warp_flow_gpu.cpp:12:35: fatal error: opencv2/xfeatures2d.hpp: No such file or directory
    compilation terminated.
    CMakeFiles/denseflow.dir/build.make:134: recipe for target ‘CMakeFiles/denseflow.dir/src/dense_warp_flow_gpu.cpp.o’ failed
    make[2]: *** [CMakeFiles/denseflow.dir/src/dense_warp_flow_gpu.cpp.o] Error 1
    CMakeFiles/Makefile2:67: recipe for target ‘CMakeFiles/denseflow.dir/all’ failed
    make[1]: *** [CMakeFiles/denseflow.dir/all] Error 2
    Makefile:83: recipe for target ‘all’ failed
    make: *** [all] Error 2
  • 解决方法打开dense flow文件夹中的CMakeLists.txt,根据opencv的名称及路径,设置opencv路径指向build文件夹(在build文件夹下利用pwd命令最方便得到)如我的路径设置:

set(OpenCV_DIR /home/lxc/opencv-4.1.0/build)
find_package(OpenCV REQUIRED) #这句位于文档18行

在这里插入图片描述

5.测试
在build目录下不要退出,放一个视频test.avi,然后执行:

./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

其中:

  • test.avi: 输入视频文件
  • tmp: 输出RGB文件和光流文件
  • dir: 输出到文件夹。将dir换为zip,会输出到zip文件
    我遇到的问题:
  • 2019-10-26 17:11:22,353 FATAL [default] CRASH HANDLED; Application has crashed due to [SIGSEGV] signal
    2019-10-26 17:11:22,353 WARN [default] Aborting application. Reason: Fatal log at[/dense_flow_opencv3.1/dense_flow/include/easylogging++/src/easylogging++.h:5583]
    已放弃 (核心已转储)
  • 解决方法:在build文件夹下新建tmp文件夹,在tmp中新建flow_x;flow_y;image文件夹,重新执行,不再报错

6.再测试下tsn中的截帧提取光流脚本,参考

参考链接:

  • opencv2.4.13版本
  • opencv4.1.0版本
  • 可能出现的问题1
  • 可能出现的问题2
  • 执行时可能出现的问题

你可能感兴趣的:(Ubuntu16.04+opencv4.1.0 dense_flow配置过程记录)