List of Packages for Computer Vision Developers (Ubuntu 14.04)

Posted on October 27, 2015

0


I am some-what intermediate developer mainly focusing on Computer Vision related development. I recently had to upgrade to Ubuntu 14.04 (Trusty) and turned out I rely on quite a lot of libraries and tools which are not available by default. Here is my list of packages :

Feel free to mentions packages/libraries that you as a developer often use. Scroll to the end to see the entire list together.

Basic Setup

I really hate Unity. GNOME Installation :
sudo apt-get install gnome-session-fallback

GVIM. I am a vim lover :P.
sudo apt-get install vim-gnome

Right-click open terminal utility is pretty useful. This is commonly available in RedHat but not on Ubuntu
sudo apt-get install nautilus-open-terminal
nautilus -q && nautilus

I find the long directory name that ubuntu displays on terminal to be annoying. My bash prompt. Put this in $HOME/.bashrc
export PS1=”[\u@\[\e[34;1m\]\H \[\e[0m\]\W]\$ “

Dropbox, Google Chrome. No-brainer here. Just downloaded latest debian packages from their respective webpages.

Latex

If you are into scientific writing use latex. MS Word is not what the community prefers. Even if you are a casual writer no harm in using latex. It will help you stay organized. Latex is no more for monotonous documents and thesis. You can build beautiful Presentation, Posters, and even Books with Latex. latextemplates.com has superb templates to get you started. If you have not used latex before there are tons of beginner tutorials out there.  I use Kile (a latex IDE).

sudo apt-get install kile
sudo apt-get install texlive-science texlive-latex-extra
sudo apt-get install kbibtex

Mathematics Packages

Octave. Scripting language with good support for matrix operation. Open source alternative of Matlab.
sudo apt-get install octave

Maxima. Symbolic Algebra. If you are into quite a bit of Algebraic manipulation using algebra will relieve a lot of your stress. I use it for symbolic calculus, manipulating long algebraic operations and matrix manipulation. If you are a new user, highly recommended to spend 2 hours learning maxima. Very well worth the effort.
sudo apt-get install wxmaxima

Eigen. A powerful, fast and use-friendly Linear Algebra library. OpenCV linear algebra seem to a little slower at times. There are a lot of advance LA algorithms in Eigen. Need to install it from source code. Make sure you have gcc before you attempt this.
download from http://eigen.tuxfamily.org/index.php?title=Main_Page
unzip
mkdir build_dir
cmake ..
make
sudo make install

With Apt
sudo apt-get install libeigen3-dev

Programming Tools

GCC Compiler Suit. It is very annoying that Ubuntu does not have this package pre-installed. I wonder the reason behind this. Please enlighten me if you know the reason.
sudo apt-get install build-essential cmake

Git. If you are getting into serious programming projects please consider using version control. You might want to look into github and bitbucket for more resources to learn about VCS (version control systems).
sudo apt-get install git

Doxygen. Documentation system. Your colleagues and future you will thank you for documenting your code well. Doxygen uses specially formatted code comments to generate beautiful documentation. Lot of big projects including ROS, OpenCV use DOxygen. Highly recommended to spend 20min to know how you should write DOxygen recognizable comments.
sudo apt-get install doxygen

Valgrind. Code profiling. Once your code gets bigger you want to identify the bottlenecks/hotspots to speed it up. I had earlier written up a blog on code profiling. Access it here.
sudo apt-get install valgrind

Commonly required development (-dev) packages

sudo apt-get install libtbb-dev
sudo apt-get install libusb-dev
sudo apt-get install libtiff5-dev libpng++-dev libpng12-dev
sudo apt-get install libavcodec-dev libav-tools

Qt5

Qt is a a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI). In addition to QtGUI you can program databases, network in your code. This comes in handly when you have ton of data stored in SQL databases and need to perform computation with it. Qt is a nice skill to have in my opinion. A while ago had written up Qt tutorial. Access it here and here.
sudo apt-get install qt5-default qttools5-dev-tools
sudo apt-get install qtcreator

CUDA Installation

GPU Programming. If you have NVIDIA GPU you may want to install CUDA. Be warned that this sometimes can mess with you X server (Graphical Interface on Ubuntu). Although 2 years ago it was much harder to install then today (2015). I just followed the official instructions this time. I installed CUDA7.5 on Ubuntu 14.04 x86_64
Get deb packages from : Cuda-download (NVIDIA). Go to your downloads directory. Official Installation guide (Linux)
$ sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
Set your .bashrc
export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

OpenCV

Computer Vision libraries. An indispensable tool to start projects with image processing, computer vision. With OpenCV3 it provides a lot more features like image stitching, 3d reconstruction, etc. Unfortunately the Debian packages are often not updated enough and does not include all the features. However if you are a beginner I would recommend you install using apt-get. Although, I must say, installation from source code is also easy enough.

I like to have it always built from source code. Please follow my another post on more details on OpenCV installation on Ubuntu 14.04 from Source code.

Here just listing my cmake configuration.
Download from http://opencv.org/ or clone from https://github.com/Itseez/opencv
$ cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DWITH_TBB=ON -DWITH_QT=ON -DWITH_OPENMP=ON -DWITH_PTHREADS_PF=ON -DWITH_OPENNI2=ON -DBUILD_EXAMPLE=ON -DENABLE_FAST_MATH=ON -DBUILD_EXAMPLES=ON -DBUILD_PERF_TESTS=ON
$ make && make install 

Once the installation is successful. Make sure you can compile and run a basic image reading-display example. Here.

You may choose to install Opencv-contrib (extra modules). https://github.com/Itseez/opencv_contrib.

For easy way out :P. Ubuntu still has opencv 2.4 which now rather old. Be warned.!

sudo apt-get install libopencv-dev python-opencv

ROS (Robot Operating System)

ROS provides functionality for inter-process communication tailored to programming robots. I use it mainly for robotic vision so that my programs can work well with ros supported robots and for visualization with rviz.

Installation Instructions : http://wiki.ros.org/jade/Installation/Ubuntu
I
f you are new to ROS start official tutorial here : http://wiki.ros.org/ROS/Tutorials. Be warned that even for experienced programmers it is a bit daunting (as of 2015) with a rather steep learning curve.

However if you are a little experienced with basic ros and need to use opencv with all the bells and whistles, the best way is to install ros from source code. http://wiki.ros.org/jade/Installation/Source

Other Useful Libraries

CERES-solver. Non linear least squares. If you do a geometric computer vision, you probably want this.  http://ceres-solver.org/

Python Packages

sudo apt install python-pip

sudo pip install beautifulsoup4
sudo pip install lxml

 

Miscellaneous Tools

MeshLab. If you need to work with 3D point clouds, its transformation, visualization and tinkering the point cloud, MeshLab may be useful. I use it to visualize and transform the point clouds produced from RGB-D cameras like kinnect.
sudo apt-get install meshlab
sudo apt-get install blender –> if you deal with point-clouds/mesh etc
sudo apt-get install scrot –> screen-shot utility

sudo apt-get install screen –> multi screen util.

Summary

sudo apt-get install gnome-session-fallback
sudo apt-get install nautilus-open-terminal
nautilus -q && nautilus

=====Latex
sudo apt-get install kile
sudo apt-get install texlive-science
sudo apt-get install texlive-latex-extra
====.bashrc
export PS1=”[\u@\[\e[34;1m\]\H \[\e[0m\]\W]\$ ”
export PATH=$PATH:$HOME/bin:

=====matlab
sudo mount -o loop R2015a-glnxa64.iso /mnt
http://download.ust.hk/apps/site/info/matlab.html
export LM_PROJECT=ECE_DEPT_ALL

sudo apt-get install octave
sudo apt-get install wxmaxima

=====
sudo apt-get install build-essential
sudo apt-get install git
sudo apt-get install valgrind
sudo apt-get install vim-gnome
sudo apt-get install cmake
sudo apt-get install doxygen
=====cuda7.5
https://developer.nvidia.com/cuda-downloads
`sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb`
`sudo apt-get update`
`sudo apt-get install cuda`

===== EIGEN
download from http://eigen.tuxfamily.org/index.php?title=Main_Page
unzip
mkdir build_dir
cmake ..
make
sudo make install

===== Qt5
sudo apt-get install qt5-default qttools5-dev-tools
sudo apt-get install qtcreator

===== OpenCV
sudo apt-get install libtbb-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libpng++-dev libpng12-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libav-tools

cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DWITH_TBB=ON -DWITH_QT=ON -DWITH_OPENMP=ON -DWITH_PTHREADS_PF=ON -DWITH_OPENNI2=ON -DBUILD_EXAMPLE=ON -DENABLE_FAST_MATH=ON -DBUILD_EXAMPLES=ON -DBUILD_PERF_TESTS=ON

===== ROS
http://wiki.ros.org/jade/Installation/Source
http://wiki.ros.org/jade/Installation/Ubuntu

Advertisements