编译运行hog的opencv实现

背景

前几篇LitmusRT、pgmRT等的安装就是为这里的实验做准备的,因此前置条件是编译安装好了litmusRT和pgmRT,并且当前系统内核为litmusRT

下载

克隆源码到某目录下

root@ubuntu:/home/szc/cpu-gpu/openvx# git clone https://github.com/Yougmark/opencv.git hog

配置

进入目录,修改CMakeLists.txt

root@ubuntu:/home/szc/cpu-gpu/openvx# cd hog
root@ubuntu:/home/szc/cpu-gpu/openvx/hog# vim CMakeLists.txt

修改内容如下,把liblitmus和pgm的目录改成自己的

set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} pgm boost_graph boost_filesystem boost_system)# litmus)

ocv_include_directories("/home/szc/litmus/liblitmus/include")  
ocv_include_directories("/home/szc/litmus/liblitmus/arch/x86/include")
ocv_include_directories("/home/szc/litmus/liblitmus/arch/x86/include/uapi")
ocv_include_directories("/home/szc/litmus/liblitmus/arch/x86/include/generated/uapi")

link_directories("/home/szc/cpu-gpu/openvx/pgm/")
link_directories("/home/szc/litmus/liblitmus/")

如果需要用gdb调试,还需要在此文件上面(注视下的第一行)加上C_FLAGS和CXX_FLAGS

set(CMAKE_C_FLAGS "-g ")
set(CMAKE_CXX_FLAGS "-g ")

编译

创建并进入build目录,生成Makefile

root@ubuntu:/home/szc/cpu-gpu/openvx/hog# mkdir build && cd build
root@ubuntu:/home/szc/cpu-gpu/openvx/hog/build/bin# cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=ON -D BUILD_EXAMPLES=Yes -D ENABLE_CXX11=Yes -D BUILD_opencv_cudacodec=OFF ..

编译hog

root@ubuntu:/home/szc/cpu-gpu/openvx/hog/build# make -j6

测试

测试

下载测试视频https://github.com/opencv/opencv_extra/blob/master/testdata/gpu/video/768x576.avi,放到build目录下的data目录里,然后运行bin/example_tapi_hog

root@ubuntu:/home/szc/cpu-gpu/openvx/hog/build/bin# ./example_tapi_hog

这是一个行人检测的例子,运行截图如下

编译运行hog的opencv实现_第1张图片

结语

到这里这个实验就算是跑通了,我们可以去调试一下里面的代码,主要是samples/gpu/hog.cpp,这是实验论文对应的部分。有学生邮箱的话,可以使用Clion。

在调试分析hog代码时,发现里面用了很多cuda的API(闭源,源码追踪到这里就可以结束了),因为这个实验是基于OpenVX的CPU-GPU异构调度的实验,那么就需要熟悉下CUDA的官方文档,主要是编程指南和最佳实践。

你可能感兴趣的:(CPU-GPU,cuda,gpu)