< >
Home » TK1入门教程软件篇 » TK1入门教程软件篇-安装OpenCV

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特点:

    1. 开放的C/C++源码
    1. 基于Intel处理器指令集开发的优化代码
    1. 统一的结构和功能定义
    1. 强大的图像和矩阵运算能力
    1. 方便灵活的用户接口
  • 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

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: tk1入门教程软件篇