- [Numpy](http://numpy.scipy.org/) is a scientific computing package for Python. Required for the *Python interface*.
- [Intel Threading Building Blocks (*TBB*)](http://threadingbuildingblocks.org/file.php?fid=77) 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.
+ you have in your system's CPU.
- [Intel Integrated Performance Primitives (*IPP*)](http://software.intel.com/en-us/articles/intel-ipp/) may be used to improve the performance
of color conversion, Haar training and DFT functions of the OpenCV library. Watch out, since
this isn't a free service.
- [Intel IPP Asynchronous C/C++](http://software.intel.com/en-us/intel-ipp-preview) is currently focused delivering Intel Graphics
support for advanced image processing and computer vision functions.
- OpenCV offers a somewhat fancier and more useful graphical user interface, than the default one
- by using the [Qt framework](http://qt.nokia.com/downloads). For a quick overview of what this has to offer look into the
+ by using the [Qt framework](http://qt.nokia.com/downloads). 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.
- [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page#Download) is a C++ template library for linear algebra.
more of our algorithms to work on the GPUs is a constant effort of the OpenCV team.
- [OpenEXR](http://www.openexr.com/downloads.html) 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
+- 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. Prebuilt binaries can be found [here](http://structure.io/openni). The source code of [OpenNI](https://github.com/OpenNI/OpenNI) and [OpenNI2](https://github.com/OpenNI/OpenNI2) are also available on Github.
- [Miktex]( http://miktex.org/2.9/setup) is the best [TEX](https://secure.wikimedia.org/wikipedia/en/wiki/TeX) implementation on
the Windows OS. It is required to build the *OpenCV documentation*.
@code{.bash}
nmake
@endcode
- After this set the Qt enviroment variables using the following command on Windows 7:
+ After this set the Qt environment variables using the following command on Windows 7:
@code{.bash}
setx -m QTDIR D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3
@endcode
fully functional on your computer.
- *BUILD_PACKAGE* -\> Prior to version 2.3 with this you could build a project that will
build an OpenCV installer. With this you can easily install your OpenCV flavor on other
- systems. For the latest source files of OpenCV it generates a new project that simply
- creates zip archive with OpenCV sources.
+ systems. For the latest source files of OpenCV, it generates a new project that simply
+ creates a zip archive with OpenCV sources.
- *BUILD_SHARED_LIBS* -\> With this you can control to build DLL files (when turned on) or
static library files (\*.lib) otherwise.
- *BUILD_TESTS* -\> Each module of OpenCV has a test project assigned to it. Building these
![](images/OpenCVBuildResultWindows.jpg)
- For the documentation you need to explicitly issue the build commands on the *doc* project for
+ For the documentation, you need to explicitly issue the build commands on the *doc* project for
the PDF files and on the *doc_html* for the HTML ones. Each of these will call *Sphinx* to do
all the hard work. You can find the generated documentation inside the `Build/Doc/_html` for the
HTML pages and within the `Build/Doc` the PDF manuals.
![](images/WindowsBuildDoc.png)
To collect the header and the binary files, that you will use during your own projects, into a
- separate directory (simillary to how the pre-built binaries ship) you need to explicitely build
+ separate directory (simillary to how the pre-built binaries ship) you need to explicitly build
the *Install* project.
![](images/WindowsBuildInstall.png)
caused mostly by old video card drivers. For testing the GPU (if built) run the
*performance_gpu.exe* sample application.
-Set the OpenCV enviroment variable and add it to the systems path {#tutorial_windows_install_path}
+Set the OpenCV environment variable and add it to the systems path {#tutorial_windows_install_path}
=================================================================
-First we set an enviroment variable to make easier our work. This will hold the build directory of
+First we set an environment variable to make easier our work. This will hold the build directory of
our OpenCV library that we use in our projects. Start up a command window and enter:
@code
setx -m OPENCV_DIR D:\OpenCV\Build\x86\vc10 (suggested for Visual Studio 2010 - 32 bit Windows)
The OpenCV libraries, distributed by us, on the Microsoft Windows operating system are in a
Dynamic Linked Libraries (*DLL*). These have the advantage that all the content of the
-library are loaded only at runtime, on demand, and that countless programs may use the same library
+library is loaded only at runtime, on demand, and that countless programs may use the same library
file. This means that if you have ten applications using the OpenCV library, no need to have around
a version for each one of them. Of course you need to have the *dll* of the OpenCV on all systems
where you want to run your application.
extension libraries. The good part is that at runtime only the *DLL* is required.
To pass on all this information to the Visual Studio IDE you can either do it globally (so all your
-future projects will get these information) or locally (so only for you current project). The
+future projects will get this information) or locally (so only for you current project). The
advantage of the global one is that you only need to do it once; however, it may be undesirable to
-clump all your projects all the time with all these information. In case of the global one how you
+clump all your projects all the time with all this information. In case of the global one how you
do it depends on the Microsoft Visual Studio you use. There is a **2008 and previous versions** and
a **2010 way** of doing it. Inside the global section of this tutorial I'll show what the main
differences are.
Projects are the building blocks of an application. Every project will realize something and you
will have a main project in which you can put together this project puzzle. In case of the many
simple applications (like many of the tutorials will be) you do not need to break down the
-application into modules. In these cases your main project will be the only existing one. Now go
+application into modules. In these cases, your main project will be the only existing one. Now go
create a new solution inside Visual studio by going through the File --\> New --\> Project menu
selection. Choose *Win32 Console Application* as type. Enter its name and select the path where to
create it. Then in the upcoming dialog make sure you create an empty project.
*"Additional Include Directories"* add the path to your OpenCV include. If you don't have *"C/C++"*
group, you should add any .c/.cpp file to the project.
@code{.bash}
-\f$(OPENCV_DIR)\..\..\include
+$(OPENCV_DIR)\..\..\include
@endcode
![](images/PropertySheetOpenCVInclude.jpg)
![](images/PropertySheetOpenCVLibrariesRelease.jpg)
-You can find your property sheets inside your projects directory. At this point it is a wise
+You can find your property sheets inside your projects directory. At this point, it is a wise
decision to back them up into some special directory, to always have them at hand in the future,
whenever you create an OpenCV project. Note that for Visual Studio 2010 the file extension is
*props*, while for 2008 this is *vsprops*.
The *global* method
-------------------
-In case you find to troublesome to add the property pages to each and every one of your projects you
+In case you find it too troublesome to add the property pages to each and every one of your projects you
can also add this rules to a *"global property page"*. However, this applies only to the additional
include and library directories. The name of the libraries to use you still need to specify manually
by using for instance: a Property page.
application file currently is (so usually your build directory). Moreover, in case of starting from
the *IDE* the console window will not close once finished. It will wait for a keystroke of yours.
-This is important to remember when you code inside the code open and save commands. You're resources
+This is important to remember when you code inside the code open and save commands. Your resources
will be saved ( and queried for at opening!!!) relatively to your working directory. This is unless
-you give a full, explicit path as parameter for the I/O functions. In the code above we open [this
-OpenCV logo](https://github.com/opencv/opencv/tree/master/samples/data/opencv-logo.png). Before starting up the application make sure you place
+you give a full, explicit path as a parameter for the I/O functions. In the code above we open [this
+OpenCV logo](https://github.com/opencv/opencv/tree/master/samples/data/opencv-logo.png). Before starting up the application,
+make sure you place
the image file in your current working directory. Modify the image file name inside the code to try
it out on other images too. Run it and voil á:
Command line arguments with Visual Studio
-----------------------------------------
-Throughout some of our future tutorials you'll see that the programs main input method will be by
-giving a runtime argument. To do this you can just start up a commmand windows (cmd + Enter in the
+Throughout some of our future tutorials, you'll see that the programs main input method will be by
+giving a runtime argument. To do this you can just start up a command windows (cmd + Enter in the
start menu), navigate to your executable file and start it with an argument. So for example in case
of my upper project this would look like:
@code{.bash}
![](images/VisualStudioCommandLineArguments.jpg)
Specify here the name of the inputs and while you start your application from the Visual Studio
-enviroment you have automatic argument passing. In the next introductionary tutorial you'll see an
+environment you have automatic argument passing. In the next introductory tutorial you'll see an
in-depth explanation of the upper source code: @ref tutorial_display_image.