0%

Manifold安装OpenCV和CUDA

版本需求

Opencv
版本:2.4.10
依赖库:下载地址
下载地址:下载地址
CUDA
版本:6.5
下载地址:下载地址
PS: 在进行以下操作前,请先参照Ubuntu 14.04 binary-armhf源更换下载源,否则下载速度特别慢!

安装CUDA

下载

从CUDA的下载地址,下载安装文件

安装

执行以下命令

1
2
3
sudo dpkg -i cuda-repo-l4t-r21.3-6-5-prod_6.5-42_armhf.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-6-5

设置访问GPU

设置当前用户下可以访问GPU

1
sudo usermod -a -G video $USER

设置环境变量

~/.bashrc文件最后添加以下内容

1
2
export PATH=/usr/local/cuda-6.5/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib:$LD_LIBRARY_PATH

输入后,使用以下命令重新载入.bashrc文件

1
source ~/.bashrc

验证编译环境

1
nvcc --version

如返回CUDA的版本信息,则环境配置成功

编译并运行例程

PS: 在执行本次操作的时候,请务必开启Manifold的最大性能,以减少等待时间!!!
查看/usr/local/cuda目录下是否有samples文件夹
复制samples文件夹

1
cuda-install-samples-6.5.sh /home/ubuntu/

然后在主目录~/中会看到一个名为NVIDIA_CUDA-6.5_Samples, 进入该目录,然后执行make命令

1
2
cd ~/NVIDIA_CUDA-6.5_Samples
make

这个过程会非常的慢,大约要一个多小时,这还是在最大性能的情况下,请大家耐心等待!
make结束后,会在~/NVIDIA_CUDA-6.5_Samples/bin/armv7/linux/release/gnueabihf/目录下,会生成可执行文件,如图:

要想了解每个Sample的测试功能,可以参考以下信息:http://docs.nvidia.com/cuda/cuda-samples/

安装OpenCV

下载依赖库并安装

1
2
3
4
sudo dpkg -i install libopencv4tegra-repo_l4t-r21_2.4.10.1_armhf.deb
sudo apt-get update
sudo apt-get install libopencv4tegra libopencv4tegra-dev libopencv4tegra-python
sudo apt-get install libgtk2.0-dev pkg-config

下载并解压OpenCV

解压命令

1
unzip opencv-2.4.10.zip

编译OpenCV

opencv-2.4.10的旁边新建一个名为build的文件夹,并进入该目录,然后执行cmake命令

1
2
3
mkdir build
cd build
cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN="3.2" -DCUDA_ARCH_PTX="" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF ../opencv-2.4.10/

注意运行完成后的返回信息,看一下Use CUDA是否为Yes,如果是Yes,表示可以启用CUDA

PS: 如果该步提示找不到cmake,那么请先安装,该命令包含cmake、g++等命令

1
sudo apt-get install build-essential make cmake g++

安装OpenCV

1
sudo make -j4 install

修改环境变量

1
2
3
echo "# Use OpenCV and other custom-built libraries." >> ~/.bashrc  
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/" >> ~/.bashrc
source ~/.bashrc

测试OpenCV的样例

第一个示例 基础测试

进入opencv-2.4.10/samples/cpp

1
2
g++ edge.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -o edge
./edge

运行结果如图所示

第二个示例 测试摄像头

进入opencv-2.4.10/samples/cpp

1
2
g++ laplace.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_calib3d -lopencv_contrib -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_video -lopencv_videostab -o laplace  
./laplace

运行结果如图所示

PS: 这个例子我运行的时候出现错误,摄像头启动后,会闪退,原因未知。

第三个示例 测试GPU加速

进入opencv-2.4.10/samples/gpu

1
2
g++ houghlines.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_calib3d -lopencv_contrib -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_video -lopencv_videostab -o houghlines
./houghlines ../cpp/logo_in_clutter.png

运行结果如图所示
原图

CPU运行效果图

GPU运行效果图

CPU和GPU运行时间对比图