.. _opencv_software: Software needed to build OpenCV from sources ============================================ Building the OpenCV library from scratch requires a couple of tools installed beforehand. Building tools -------------- * An |IDE|_, or just a C\C++ compiler that will actually make the binary files. Here we will use the |Visual_Studio|_. * |CMake|_, which is a neat tool to make the project files (for your chosen IDE) from the OpenCV source files. It will also allow an easy configuration of the OpenCV build files, in order to make binary files that fits exactly to your needs. * Git to acquire the OpenCV source files. A good tool for this is |GitHub_for_Windows|_. Alternatively, you can just download an archived version of the source files from the |OpenCV_SourceForge|_. Third-party libraries and software ---------------------------------- OpenCV may come in multiple flavors. There is a "core" section that will work on its own. Nevertheless, there is a couple of tools, libraries made by 3rd parties that offer services of which the OpenCV may take advantage. These will improve its capabilities in many ways. In order to use any of them, you need to download and install them on your system. Improving performance ^^^^^^^^^^^^^^^^^^^^^ * |IntelTBB|_ is used inside OpenCV for parallel code snippets. Using this will make sure that the OpenCV library will take advantage of all the cores you have in your systems CPU. * |IntelIIP|_ may be used to improve the performance of color conversion, Haar training and DFT functions of the OpenCV library. Intel made it free to use with OpenCV 3.0 and later. * The latest |CUDA_Toolkit|_ will allow you to use the power lying inside your GPU. This will drastically improve performance for some algorithms (e.g the HOG descriptor). Getting more and more of our algorithms to work on the GPUs is a constant effort of the OpenCV team. Other 3rd-party libraries ^^^^^^^^^^^^^^^^^^^^^^^^^ * OpenCV offers a somewhat fancier and more useful graphical user interface, than the default one by using the |qtframework|_. For a quick overview of what this has to offer look into the documentations *highgui* module, under the *Qt New Functions* section. Version 4.6 or later of the framework is required. * |Numpy|_ is a scientific computing package for Python which is required for the *Python interface*. * |Eigen|_ is a C++ template library for linear algebra. * |OpenEXR|_ source files are required for the library to work with this high dynamic range (HDR) image file format. * The |OpenNI_Framework|_ contains a set of open source APIs that provide support for natural interaction with devices via methods such as voice command recognition, hand gestures and body motion tracking. .. |IDE| replace:: IDE .. _IDE: http://en.wikipedia.org/wiki/Integrated_development_environment .. |Visual_Studio| replace:: Microsoft Visual Studio IDE .. _Visual_Studio: https://www.microsoft.com/visualstudio/en-us .. |MinGW| replace:: MinGW .. _MinGW: http://www.mingw.org/ .. |CMake| replace:: CMake .. _CMake: http://www.cmake.org/cmake/resources/software.html .. |GitHub_for_Windows| replace:: GitHub for Windows .. _GitHub_for_Windows: http://code.google.com/p/tortoisegit/wiki/Download .. |OpenCV_SourceForge| replace:: OpenCV page on Sourceforge .. _OpenCV_SourceForge: http://sourceforge.net/projects/opencvlibrary/files/opencv-win/ .. |IntelTBB| replace:: Intel © Threading Building Blocks (*TBB*) .. _IntelTBB: http://threadingbuildingblocks.org/file.php?fid=77 .. |IntelIIP| replace:: Intel © Integrated Performance Primitives (*IPP*) .. _IntelIIP: http://software.intel.com/en-us/articles/intel-ipp/ .. |CUDA_Toolkit| replace:: CUDA Toolkit .. _CUDA_Toolkit: http://developer.nvidia.com/cuda-downloads .. |qtframework| replace:: Qt framework .. _qtframework: http://qt.nokia.com/downloads .. |Numpy| replace:: Numpy .. _Numpy: http://numpy.scipy.org/ .. |Eigen| replace:: Eigen .. _Eigen: http://eigen.tuxfamily.org/index.php?title=Main_Page#Download .. |OpenEXR| replace:: OpenEXR .. _OpenEXR: http://www.openexr.com/downloads.html .. |OpenNI_Framework| replace:: OpenNI Framework .. _OpenNI_Framework: http://www.openni.org/