内容简介:在计算机视觉领域中,视频算法是重要的一个部分,不同于图像,视频需要含有时序特征的多帧图像,同时,还包括一定的运动信息,如光流。在预处理时,需要将视频中的图像和光流提取出来,开源工程在CUDA 9和OpenCV 3中,配置dense_flow工程。OpenCV的编译步骤如下:
在计算机视觉领域中,视频算法是重要的一个部分,不同于图像,视频需要含有时序特征的多帧图像,同时,还包括一定的运动信息,如光流。在预处理时,需要将视频中的图像和光流提取出来,开源工程 dense_flow 已经实现这个功能,支持GPU操作。
在CUDA 9和OpenCV 3中,配置dense_flow工程。
编译OpenCV
OpenCV的编译步骤如下:
OpenCV 3
CUDA 9不支持OpenCV2.x,只能选用3.x,如3.1.0, 参考
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 复制代码
位置如下:
原因是,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/ .. 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- GuiLite 3.5 发布:视频,视频,视频
- AVFoundation 视频常用套路: 视频合成与导出,拍视频手电筒,拍照闪光灯
- AVFoundation 视频常用套路: 视频合成与导出,拍视频手电筒,拍照闪光灯
- .NET 处理视频-MediaInfo 获取视频信息
- Android 音视频开发打怪升级之音视频硬解码篇(一):音视频基础知识
- .NET 处理视频-ffmpeg.exe 获取视频信息
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!