内容简介:在计算机视觉领域中,视频算法是重要的一个部分,不同于图像,视频需要含有时序特征的多帧图像,同时,还包括一定的运动信息,如光流。在预处理时,需要将视频中的图像和光流提取出来,开源工程在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 获取视频信息
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux内核完全注释
赵炯 / 机械工业出版社 / 2005-8 / 42.00元
Linux内核完全注释,ISBN:9787111149682,作者:赵炯编著一起来看看 《Linux内核完全注释》 这本书的介绍吧!
JSON 在线解析
在线 JSON 格式化工具
RGB HSV 转换
RGB HSV 互转工具