What do the optional libraries in the OpenCV build

2019-03-19 07:23发布

问题:

I am trying to build OpenCV from source (latest SVN trunk) and there are several "optional" dependencies, which will amount to several gigabytes of downloading on their own, especially with the Qt Framework. For example:

  • CUDA
  • GHOSTSCRIPT
  • MIKTEX
  • PYTHON
  • EIGEN
  • IPP
  • JASPER
  • JPEG
  • OPENEXR
  • OPENNI
  • PNG
  • QT
  • QT_OPENGL
  • TBB
  • TIFF
  • VIDEOINPUT
  • XIMEA

Can someone provide a list of what each of these external things provides - ranked by importance? (Sometimes subjective answers are the most insightful answers.) Which ones are built in the binary distribution?

回答1:

Usually you can leave all the flags in default state unless you need to enable or disable some special features. All really important libraries are already there.

Options you listened can be split into several groups:

Image input/output
Actually OpenCV comes with a copy of these libraries for platforms where these libraries are missed (like Windows or Android).

  • TIFF
  • JASPER - jpeg2000 format
  • JPEG
  • PNG

  • OPENEXR - this one is not included into OpenCV

Video IO

  • VIDEOINPUT - video IO API for Windows platform. Since version 2.3.0 OpenCV embeds it and this flag is useful only to exclude videoinput library from build.
  • OPENNI - driver for Kinect
  • XIMEA - API for XIMEA cameras

Libraries of performance primitives

  • IPP - few dozens of OpenCV functions have IPP accelerated versions.
  • TBB - OpenCV has a number of functions parallelized with Intel TBB library.
  • EIGEN - some math functions (like SVD) can use power of Eigen library but OpenCV always provides alternative implementation.

GPU acceleration

  • CUDA - OpenCV comes with gpu module having a lot of functions accelerated with NVIDIA CUDA technology. If CUDA SDK is not found, then all functions degrade to CPU implementation.

Enhanced GUI

  • QT - OpenCV GUI functions (like imshow) has a QT version. Without QT they will default to native OS interfaces. (In case of Windows it will be WinAPI).
  • QT_OPENGL

Bindings to other languages

  • PYTHON - also build bindings for Python language

Building documentation

  • GHOSTSCRIPT - obsolete in 2.3.x (does not affect build)
  • MIKTEX - Windows only. Used to generate documentation in PDF format

Actually this is just a partial answer to your question. You have listened less than half of the options that can be set on OpenCV configuration step - other half is hidden because those options are not available for your platform.