TK1入门教程软件篇-安装OpenCV
TK1入门教程软件篇-安装OpenCV
说明:
- 介绍如何在TK1安装OpenCV
- 安装OpenCV有两种方式:
- 1)安装预建的OpenCV4Tegra库
- 2)源码安装
OpenCV简介:
- OpenCV是Intel®开源计算机视觉库。
- 它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。
- OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。
- 它不依赖于其它的外部库——尽管也可以使用某些外部库。
- OpenCV 对非商业应用和商业应用都是免费(FREE)
- 代码下载地址:http://www.sourceforge.net/projects/opencvlibrary
OpenCV特点:
- 开放的C/C++源码
- 基于Intel处理器指令集开发的优化代码
- 统一的结构和功能定义
- 强大的图像和矩阵运算能力
- 方便灵活的用户接口
- 6)同时支持MS-WINDOWS、Linux平台
OpenCV核心功能:
- Cxcore:一些基本函数(各种数据类型的基本运算等)。
- Cv:图像处理和计算机视觉功能(图像处理,结构分析,运动分析,物体跟踪,模式识别,摄像机定标)
- Ml:机器学习模块,目前内容主要为分类器。
- Cvaux:一些实验性的函数(ViewMorphing,三维跟踪,PCA,HMM)
- Highgui:用户交互部分,(GUI,图象视频I/O,系统调用函数)
安装准备:
SIFT/SURF的注意事项
OpenCV4Tegra不包括opencv_nonfree软件包(包含SIFT和SURF特征检测器),因为这些算法由其他公司获得专利,因此任何使用opencv_nonfree的人都有责任的风险。
解决方法1:分析公共OpenCV源代码,然后将您想要的非自由模块的部分从OpenCV复制/粘贴到您自己的项目中。
- 您将拥有大部分代码的OpenCV4Tegra的CPU优化,并具有GPU模块
- 并将使用非自由软件包(如SURF)所需的非优化专利代码。
- 所以这个选项给出了全部的性能(除了非自由代码之外的所有功能),但是很乏味。
解决方法2:忽略OpenCV4Tegra,从源代码本地编译OpenCV库。
- 您仍然会拥有GPU模块,但没有任何CPU优化,但您不需要花费时间来剔除部分OpenCV非免费模块代码。
- 因此,如果您在CPU上运行大部分代码,这个选项最简单,但是会产生较慢的代码。
安装预建的OpenCV4Tegra库:
- OpenCV4Tegra是OpenCV的CPU和GPU优化版本,可作为JetPack中的预构建库或单独的.deb软件包
- 可用于L4T rel-19和L4T rel-21
- 推荐优先使用这种方法。
下载软件包:
- 下载地址:https://developer.nvidia.com/linux-tegra-rel-19
- 下载地址:https://developer.nvidia.com/linux-tegra-rel-21
- 在TK1上浏览器下载,或电脑上下载后再上传到TK1
- 假设放于
~/opencv
目录下
更新源
sudo apt-add-repository universe
sudo apt-get update
- 在L4T 19.x:
sudo dpkg -i libopencv4tegra_2.4.10.1_armhf.deb
sudo dpkg -i libopencv4tegra-dev_2.4.10.1_armhf.deb
- 在L4T 21.x:
sudo dpkg -i libopencv4tegra-repo_l4t-r21_2.4.10.1_armhf.deb (does not work, please fix!)
sudo apt-get update
sudo apt-get install libopencv4tegra libopencv4tegra-dev
- 安装一些函数库
# Some general development libraries
sudo apt-get install build-essential make cmake cmake-curses-gui g++
# libav video input/output development libraries
sudo apt-get install libavformat-dev libavutil-dev libswscale-dev
# Video4Linux camera development libraries
sudo apt-get install libv4l-dev
# Eigen3 math development libraries
sudo apt-get install libeigen3-dev
# OpenGL development libraries (to allow creating graphical windows)
sudo apt-get install libglew1.6-dev
# GTK development libraries (to allow creating graphical windows)
sudo apt-get install libgtk2.0-dev
- 安装完成
源码安装:
如果您想要最新的OpenCV代码,或者您想要自定义OpenCV库,并且不希望NVIDIA的OpenCV4Tegra的CPU和多核优化
请注意,您将无法获得如OpenCV4Tegra的全部优化性能。
源码地址:
- 官网:http://opencv.org/
- 注意选择OpenCV for Linux/Mac
TK1直接源码下载:
cd ~/opencv
wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.9/opencv-2.4.9.zip
- 解压OpenCV源码,放置根目录,并进行配置:
unzip opencv-2.4.9.zip
mv opencv-2.4.9 ~
- 进入Opencv,配置编译
cd ~/opencv-2.4.9
mkdir build
cd build
cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN="3.2" -DCUDA_ARCH_PTX="" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF
sudo make -j4 install
- 添加环境变量
echo "# Use OpenCV and other custom-built libraries." >> ~/.bashrc
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/" >> ~/.bashrc
source ~/.bashrc
- 安装完成
测试OpenCV:
- 安装C++编译器
# Make sure we have installed a C++ compiler.
sudo apt-get install build-essential g++
- 测试例子1:
# Test a simple OpenCV program. Creates a graphical window, hence you should plug a HDMI monitor in or use a remote viewer such as X Tunneling or VNC or TeamViewer on your desktop.
cd ~/opencv-2.4.9/samples/cpp
g++ edge.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -o edge
./edge
- 测试例子2:
# If you have a USB webcam plugged in to your board, then test one of the live camera programs.
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
- 测试例子3:
# Test a GPU accelerated OpenCV sample.
cd ../gpu
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处理后
参考:
- http://elinux.org/Jetson/Tutorials/OpenCV
- http://elinux.org/Jetson/Installing_OpenCV
- http://elinux.org/Jetson/Computer_Vision_Performance
- http://blog.csdn.net/frd2009041510/article/details/42930113
- http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html
- http://docs.opencv.org/doc/tutorials/tutorials.html
- http://docs.opencv.org/opencv2refman.pdf
- http://www.jetsonhacks.com/2015/06/14/ros-opencv-and-opencv4tegra-on-the-nvidia-jetson-tk1/
- http://blog.hi58.net/?p=34431
- http://developer.nvidia-china.com/forum.php?mod=viewthread&tid=7912
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号