CUDA7.5+Opencv+doppiaV2+Ubuntu15.10

23 阅读2分钟

2016-04-28 16:26:42

本文没有一步一步教你如何安装,具体步骤可从参照中获得##

已装软件

cuda7.5 prubuf (libprotoc) 3.0.0(自己从github上下载安装) boost_1_59_0 ###参照### 1.blog.csdn.net/hwl56789/ar… 2.blog.csdn.net/tingyue_/ar…

注意点

  1. opencv_默认不支持Cuda必须自己重新编译,opecv默认安装运行cuda会出现一下错误 会出现
 Opencv Error: no GPU support (library is compiled without CUDA support)
  1. opencv_支持cuda编译流程 下载好opencv-2.4.12.zip 解压为opencv-2.4.12 网上说更高的版本也可以 再说一次注意opencv版本 用2.4.9大约会在65%时报错
  • 编译opencv命令如下:
cd opencv-2.4.12
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_ARCH_BIN="x.x" ..
make
make install

x.x根据/usr/local/cuda-7.5/samples/bin/x86_64/linux/release/deviceQuery 所执行的结果填写

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GT 650M"
  CUDA Driver Version / Runtime Version          8.0 / 7.5
  CUDA Capability Major/Minor version number:    3.0
	...
	...
	...

CUDA Capability Major/Minor version number: 3.0就填3.0

###测试了objects_detection

  • 按readme执行命令如下,配好会出现一段视屏展示行人检测
cd rodrigob-doppia/src/objects_detection
cmake . && make -j2 && OMP_NUM_THREADS=4 ./objects_detection -c cvpr2012_very_fast_over_bahnhof.config.ini --gui.disable false
  • 问题1
/usr/local/include/boost/variant/get.hpp:178:5: error: invalid application of 
‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’

解决方法:

将common_settings.cmake中的

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ")

改成

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -DBOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT=1")

参考[bitbucket.org/rodrigob/do…]

  • 问题2
rodrigob-doppia/src/applications/objects_detection/../../../libs/cudatemplates/include
/cudatemplates/error.hpp:44:26: fatal error: cuda_runtime.h: 没有那个文件或目录

解决方法:

把common_settings.cmake,MakeLists.txt(具体哪个记不清了)文件中的cuda目录改成自己安装cuda的目录
  • 问题3 在DataSequence.hpp报参数ReadLittleEndian64 的uint64_t参数不匹配错误,感觉是protobuf版本的问题 解决方法: 打开DataSequence.hpp
- boost::uint64_t size;
+ google::protobuf::uint64 size;

-问题4

src/objects_detection/SoftCascadeOverIntegralChannelsFastFractionalStage.cpp:24:9:
 error: ‘swap’ is not a member of ‘stdstd::swap(weak_classifier.level2_true_node,
 
 weak_classifier.level2_false_node);

解决方法:

在出错文件中加入#include<iostream>