视频截帧+光流 基于 CUDA 9 + OpenCV 3

栏目: 编程工具 · 发布时间: 6年前

内容简介:在计算机视觉领域中,视频算法是重要的一个部分,不同于图像,视频需要含有时序特征的多帧图像,同时,还包括一定的运动信息,如光流。在预处理时,需要将视频中的图像和光流提取出来,开源工程在CUDA 9和OpenCV 3中,配置dense_flow工程。OpenCV的编译步骤如下:
视频截帧+光流 基于 CUDA 9 + OpenCV 3

在计算机视觉领域中,视频算法是重要的一个部分,不同于图像,视频需要含有时序特征的多帧图像,同时,还包括一定的运动信息,如光流。在预处理时,需要将视频中的图像和光流提取出来,开源工程 dense_flow 已经实现这个功能,支持GPU操作。

在CUDA 9和OpenCV 3中,配置dense_flow工程。

编译OpenCV

OpenCV的编译步骤如下:

OpenCV 3

CUDA 9不支持OpenCV2.x,只能选用3.x,如3.1.0, 参考

视频截帧+光流 基于 CUDA 9 + OpenCV 3

OpenCV源码

下载OpenCV源码文件,并解压:

wget https://github.com/opencv/opencv/archive/3.1.0.zip

unzip 3.1.0.zip

cd opencv-3.1.0
复制代码

opencv_contrib

在opencv-3.1.0中,下载opencv_contrib文件,并解压:

wget https://github.com/opencv/opencv_contrib/archive/3.1.0.zip

unzip 3.1.0.zip
复制代码

位置如下:

视频截帧+光流 基于 CUDA 9 + OpenCV 3

原因是,SURF或SIFT算法移入 opencv_contrib ,需要参于源码编译,在 dense_flow 中,调用SURF算法,否则无法找到SURF,参考。

Error:

undefined reference to `cv::xfeatures2d::SURF::create(double, int, int, bool, bool)'
复制代码

修改cmake文件

CMake Error:

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)
复制代码

原因是,nppi已经废弃,需要替换其他的CUDA,同时,CUDA 2.0已经不兼容当前版本,需要删除。

需要修改 cmake文件夹 下的FindCUDA.cmake和OpenCVDetectCUDA.cmake,还有修改common.hpp。

修改 FindCUDA.cmake 文件,3处替换:

替换

find_cuda_helper_libs(nppi)
复制代码

find_cuda_helper_libs(nppial)
  find_cuda_helper_libs(nppicc)
  find_cuda_helper_libs(nppicom)
  find_cuda_helper_libs(nppidei)
  find_cuda_helper_libs(nppif)
  find_cuda_helper_libs(nppig)
  find_cuda_helper_libs(nppim)
  find_cuda_helper_libs(nppist)
  find_cuda_helper_libs(nppisu)
  find_cuda_helper_libs(nppitc)
复制代码

替换

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")
复制代码

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")
复制代码

替换

unset(CUDA_nppi_LIBRARY CACHE)
复制代码

unset(CUDA_nppial_LIBRARY CACHE)
  unset(CUDA_nppicc_LIBRARY CACHE)
  unset(CUDA_nppicom_LIBRARY CACHE)
  unset(CUDA_nppidei_LIBRARY CACHE)
  unset(CUDA_nppif_LIBRARY CACHE)
  unset(CUDA_nppig_LIBRARY CACHE)
  unset(CUDA_nppim_LIBRARY CACHE)
  unset(CUDA_nppist_LIBRARY CACHE)
  unset(CUDA_nppisu_LIBRARY CACHE)
  unset(CUDA_nppitc_LIBRARY CACHE)
复制代码

修改 OpenCVDetectCUDA.cmake 文件,2处删除:

将"Fermi"注释,将"Kepler"提前,即删除"Fermi"的if分支,主要是为了删除CUDA的2.0版本兼容。

set(__cuda_arch_ptx "")
  if(CUDA_GENERATION STREQUAL "Fermi")
    set(__cuda_arch_bin "2.0")
  elseif(CUDA_GENERATION STREQUAL "Kepler")
    set(__cuda_arch_bin "3.0 3.5 3.7")
复制代码

修改为

set(__cuda_arch_ptx "")
  if(CUDA_GENERATION STREQUAL "Kepler")
    set(__cuda_arch_bin "3.0 3.5 3.7")
复制代码

在CUDA版本大于6.5时,删除2.0版本的兼容,修改完成如下:

elseif(${CUDA_VERSION} VERSION_GREATER "6.5")
        set(__cuda_arch_bin "3.0 3.5")
复制代码

opencv-3.1.0/modules/cudev/include/opencv2/cudev/common.hpp 的头文件中,添加:

#include <cuda_fp16.h>
复制代码

参考

hdf5 Error

Error:

hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory
复制代码

修改opencv-3.1.0/modules/python/common.cmake文件,在文件头部中,添加

find_package(HDF5)
include_directories(${HDF5_INCLUDE_DIRS})
复制代码

参考

make

执行make操作,在 OPENCV_EXTRA_MODULES_PATH 中,需要引入 opencv_contrib

make -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/data1/wcl/workspace/opencv-3.1.0/opencv_contrib-3.1.0/modules/ ..
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithms

Data Structures and Algorithms

Alfred V. Aho、Jeffrey D. Ullman、John E. Hopcroft / Addison Wesley / 1983-1-11 / USD 74.20

The authors' treatment of data structures in Data Structures and Algorithms is unified by an informal notion of "abstract data types," allowing readers to compare different implementations of the same......一起来看看 《Data Structures and Algorithms》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具