updated version number; removed unnecessary index.html and ChangeLog.htm

This commit is contained in:
Vadim Pisarevsky 2010-12-04 19:21:45 +00:00
parent ea3ccc6d61
commit a7a5dd051a
12 changed files with 145942 additions and 136215 deletions

@ -68,7 +68,7 @@ endif()
# ----------------------------------------------------------------------------
# Current version number:
# ----------------------------------------------------------------------------
set(OPENCV_VERSION "2.1.1")
set(OPENCV_VERSION "2.2.0")
string(REGEX MATCHALL "[0-9]" OPENCV_VERSION_PARTS "${OPENCV_VERSION}")
@ -1098,10 +1098,9 @@ if(WIN32)
#exec_program(${CMAKE_COMMAND} ARGS "-E make_directory \"${CMAKE_BINARY_DIR}/win-install/\"")
exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"" OUTPUT_VARIABLE RET_VAL)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)
#Install the OpenCVConfig.cmake file which has the right paths pointing to the install directory
install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/")
#configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)
# Install the OpenCVConfig.cmake file which has the right paths pointing to the install directory
install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/")
# if videoInput support is enabled (which is by default on WIN32) copy the static library required to the installation path
# DESTINATION could also be "${CMAKE_INSTALL_PREFIX}/lib") to simplify dev environment setup of client applications

@ -74,13 +74,13 @@ if(WIN32)
#set(CPACK_PACKAGE_ICON "utils/opencv.ico")
set(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_SOURCE_DIR}\\\\doc\\\\opencv.ico")
set(CPACK_NSIS_HELP_LINK "http:\\\\\\\\opencvlibrary.sourceforge.net")
set(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\opencvlibrary.sourceforge.net")
set(CPACK_NSIS_CONTACT "info@opencvlibrary.sourceforge.net")
set(CPACK_NSIS_DISPLAY_NAME "OpenCV SDK")
set(CPACK_NSIS_HELP_LINK "http:\\\\\\\\opencv.willowgarage.com")
set(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\opencv.willowgarage.com")
set(CPACK_NSIS_CONTACT "")
set(CPACK_NSIS_DISPLAY_NAME "Open Source Computer Vision Library")
set(CPACK_NSIS_MENU_LINKS
"doc\\\\index.htm" "Start Page"
"http://opencv.willowgarage.com" "Start Page"
"doc\\\\opencv.pdf" "The Reference Manual"
"CMakeLists.txt" "The Build Script (open with CMake)"
"samples\\\\c" "C Samples"

2
README

@ -1 +1 @@
See doc/index.htm
See http://opencv.willowgarage.com

@ -131,13 +131,13 @@
#define PACKAGE_NAME "opencv"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "opencv 2.1.0"
#define PACKAGE_STRING "opencv 2.2.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "opencv"
/* Define to the version of this package. */
#define PACKAGE_VERSION "2.1.0"
#define PACKAGE_VERSION "2.2.0"
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
@ -148,7 +148,7 @@
/* #undef STACK_DIRECTION */
/* Version number of package */
#define VERSION "2.1.0"
#define VERSION "2.2.0"
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */

@ -1,525 +0,0 @@
<html>
<head>
<title>OpenCV ChangeLog</title>
<style TYPE="text/css">
<!--
P.Blurb {
margin-top: -10pt;
}
-->
</style>
</head>
<body>
<h2>2.1</h2>
<p class="Blurb"><i>(April, 2010)</i></p>
<pre>
OpenCV 2.1 is basically a stabilized OpenCV 2.0, yet there are a few new features.
>>> General modifications
- SVN repository has been migrated from SourceForge to https://code.ros.org/svn/opencv.
The bug tracker has been moved to https://code.ros.org/trac/opencv/.
And we also have OpenCV twitter! http://twitter.com/opencvlibrary
- The whole OpenCV is now using exceptions instead of the old libc-style mechanism.
That is, instead of checking error code with cvGetErrStatus() (which currently always returns 0)
you can now just call OpenCV functions inside C++ try-catch statements,
cv::Exception is now derived from std::exception.
- OpenCV does not support autotools-based build scripts,
CMake (www.cmake.org) is the only way to build OpenCV on any OS.
See http://opencv.willowgarage.com/wiki/InstallGuide.
- All the parallel loops in OpenCV have been converted from OpenMP
to Intel TBB (http://www.threadingbuildingblocks.org/). Thus parallel version of OpenCV
can now be built using MSVC 2008 Express Edition or using earlier than 4.2 versions of GCC.
- SWIG-based Python wrappers are still included,
but they are not built by default and it's generally preferable to use the new wrappers.
The python samples have been rewritten by James Bowman to use the new-style Python wrappers,
which have been also created by James.
- OpenCV can now be built and run in 64-bit mode on MacOSX 10.6 and Windows (see HighGUI and known problems below).
On Windows both MSVC 2008 and mingw64 are known to work.
- In theory OpenCV is now able to determine the host CPU on-fly and make use of SSE/SSE2/... instructions,
if they are available. That is, it should be more safe to use WITH_SSE* flags in CMake.
However, if you want maximum portability, it's recommended to turn on just WITH_SSE and WITH_SSE2
and leave other SSE* turned off, as we found that using WITH_SSE3, WITH_SSSE3 and WITH_SSE4_1 can yield
the code incompatible with Intel's pre-Penryn or AMD chips.
- Experimental "static" OpenCV configuration in CMake was contributed by Jose Luis Blanco.
Pass "BUILD_SHARED_LIBS=OFF" to CMake to build OpenCV statically.
>>> New functionality, features:
- cxcore, cv, cvaux:
* Grabcut (http://en.wikipedia.org/wiki/GrabCut) image segmentation algorithm has been implemented.
See opencv/samples/c/grabcut.cpp
* new improved version of one-way descriptor is added. See opencv/samples/c/one_way_sample.cpp
* modified version of H. Hirschmuller semi-global stereo matching algorithm that we call SGBM
(semi-global block matching) has been created. It is much faster than Kolmogorov's graph
cuts-based algorithm and yet it's usually better than the block matching StereoBM algorithm.
See opencv/samples/c/stereo_matching.cpp.
* existing StereoBM stereo correspondence algorithm by K. Konolige was noticeably improved:
added the optional left-right consistency check and speckle filtering,
improved performance (by ~20%).
* User can now control the image areas visible after the stereo rectification
(see the extended stereoRectify/cvStereoRectify), and also limit the region
where the disparity is computed (see CvStereoBMState::roi1, roi2; getValidDisparityROI).
* Mixture-of-Gaussian based background subtraction algorithm has been rewritten for better performance
and better accuracy. Alternative C++ interface BackgroundSubtractor has been provided,
along with the possibility to use the trained background model to segment the foreground
without updating the model. See opencv/samples/c/bgfg_segm.cpp.
- highgui:
* MacOSX: OpenCV now includes Cocoa and QTKit backends, in addition to Carbon and Quicktime.
Therefore you can build OpenCV as 64-bit library. Thanks to Andre Cohen and Nicolas Butko, which components
Note however that the backend are now in the alpha state, they can crash or leak memory,
so for anything more serious than quick experiments you may prefer to use Carbon and Quicktime.
To do that, pass USE_CARBON=ON and USE_QUICKTIME=ON to CMake and build OpenCV in 32-bit mode
(i.e. select i386 architecture in Xcode).
* Windows. OpenCV can now be built in 64-bit mode with MSVC 2008 and also mingw64.
* Fullscreen has been added (thanks to Yannick Verdie).
Call cvSetWindowProperty(window_name, CV_WINDOW_FULLSCREEN, 1) to make the particular window
to fill the whole screen. This feature is not supported in the Cocoa bindings yet.
* gstreamer backend has been improved a lot (thanks to Stefano Fabri)
>>> New tests:
- A few dozens of new tests have been written and many existing tests have been extended
to verify OpenCV correctness thoroughly. As a result, we brought the test coverage from
rather mediocre numbers to pretty impressive ones (especially for cxcore and cv)!
Module OpenCV 2.0 coverage OpenCV 2.1
(functions/conditions) (functions/conditions)
cxcore 65/54 91/73
cv 52/46 80/68
ml 66/47 73/52
highgui 17/3 54/27
cvaux 0/0 5/12
- Many new regression tests have been written in Python that check both OpenCV and the new-style bindings.
- The test data moved to the separate repository: https://code.ros.org/svn/opencv/trunk/opencv_extra/testdata.
And it is not included into the package, thus some tests from the cvtest and mltest will report about the missing data.
You can download the directory to your hard drive and run cvtest like:
./cvtest -d <path_to_opencv_extra>/testdata/cv
./mltest -d <path_to_opencv_extra>/testdata/ml
- The test engine has been improved:
added flags -tn, -seed, -r
the detailed information about failed tests is displayed right in the console.
>>> Bug fixes:
- about 200 bugs have been fixed. For the list of closed and still open bugs, please look at
https://code.ros.org/trac/opencv/report and
http://sourceforge.net/tracker/?group_id=22870&atid=376677.
>>> Known problems/limitations.
- there are some sporadic test failures on different platforms.
Most probably they are caused by some very special test cases
(that are usually generated randomly on each test run) and the test cases
are not properly handled by the functions or by the tests.
Some of the tests have been reproduced and reported here:
https://code.ros.org/trac/opencv/ticket/29
https://code.ros.org/trac/opencv/ticket/113
https://code.ros.org/trac/opencv/ticket/114
- the new Python bindings do not include interface for the new C++ functionality and MLL.
this is going to be addressed in some special intermediate OpenCV release
- documentation is also incomplete at the moment and there are occasional formatting,
grammar and semantical errors.
We continue to improve it on a regular basis. Please, check the up-to-date online
documentation at:
http://opencv.willowgarage.com/documentation/c/index.html (C)
http://opencv.willowgarage.com/documentation/cpp/index.html (C++)
http://opencv.willowgarage.com/documentation/python/index.html (Python)
- please also check the list of open bugs at
https://code.ros.org/trac/opencv/report and
http://sourceforge.net/tracker/?group_id=22870&atid=376677.
</pre>
<hr><h2>2.0</h2>
<p class="Blurb"><i>(September, 2009)</i></p>
<pre>
>>> New functionality, features:
- General:
* Installation package on Windows has been fixed,
MinGW is used for precompiled binaries
(see the release notes on the SourceForge site)
* autotools-based build has been repaired
- MLL:
* The new-style class aliases (e.g. cv::SVM ~ CvSVM) and the train/predict methods,
taking cv::Mat in addition to CvMat, have been added. So now MLL can be used
more seamlesly with the rest of the restyled OpenCV.
>>> Bug fixes:
- A _lot_ of bugs present in 2.0 beta have been fixed, see the OpenCV bug tracker
http://sourceforge.net/tracker/?group_id=22870&atid=376677
Thanks to everybody who submitted bug reports and/or patches!
</pre>
<hr><h2>2.0 beta</h2>
<p class="Blurb"><i>(September, 2009)</i></p>
<pre>
>>> New functionality, features: <<<
- General:
* The brand-new C++ interface for most of OpenCV functionality
(cxcore, cv, highgui) has been introduced.
Generally it means that you will need to do less coding to achieve the same results;
it brings automatic memory management and many other advantages.
See the C++ Reference section in opencv/doc/opencv.pdf and opencv/include/opencv/*.hpp.
The previous interface is retained and still supported.
* The source directory structure has been reogranized; now all the external headers are placed
in the single directory on all platforms.
* The primary build system is CMake, http://www.cmake.org (2.6.x is the preferable version).
+ In Windows package the project files for Visual Studio, makefiles for MSVC,
Borland C++ or MinGW are note supplied anymore; please, generate them using CMake.
+ In MacOSX the users can generate project files for Xcode.
+ In Linux and any other platform the users can generate project files for
cross-platform IDEs, such as Eclipse or Code Blocks,
or makefiles for building OpenCV from a command line.
* OpenCV repository has been converted to Subversion, hosted at SourceForge:
http://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary
where the very latest snapshot is at
http://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/trunk,
and the more or less stable version can be found at
http://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/tags/latest_tested_snapshot
- CXCORE, CV, CVAUX:
* CXCORE now uses Lapack (CLapack 3.1.1.1 in OpenCV 2.0) in its various linear algebra functions
(such as solve, invert, SVD, determinant, eigen etc.) and the corresponding old-style functions
(cvSolve, cvInvert etc.)
* Lots of new feature and object detectors and descriptors have been added
(there is no documentation on them yet), see cv.hpp and cvaux.hpp:
+ FAST - the fast corner detector, submitted by Edward Rosten
+ MSER - maximally stable extremal regions, submitted by Liu Liu
+ LDetector - fast circle-based feature detector by V. Lepetit (a.k.a. YAPE)
+ Fern-based point classifier and the planar object detector -
based on the works by M. Ozuysal and V. Lepetit
+ One-way descriptor - a powerful PCA-based feature descriptor,
(S. Hinterstoisser, O. Kutter, N. Navab, P. Fua, and V. Lepetit,
"Real-Time Learning of Accurate Patch Rectification").
Contributed by Victor Eruhimov
+ Spin Images 3D feature descriptor - based on the A. Johnson PhD thesis;
implemented by Anatoly Baksheev
+ Self-similarity features - contributed by Rainer Leinhart
+ HOG people and object detector - the reimplementation of Navneet Dalal framework
(http://pascal.inrialpes.fr/soft/olt/). Currently, only the detection part is ported,
but it is fully compatible with the original training code.
See cvaux.hpp and opencv/samples/c/peopledetect.cpp.
+ Extended variant of the Haar feature-based object detector - implemented by Maria Dimashova.
It now supports Haar features and LBPs (local binary patterns);
other features can be more or less easily added
+ Adaptive skin detector and the fuzzy meanshift tracker - contributed by Farhad Dadgostar,
see cvaux.hpp and opencv/samples/c/adaptiveskindetector.cpp
* The new traincascade application complementing the new-style HAAR+LBP object detector has been added.
See opencv/apps/traincascade.
* The powerful library for approximate nearest neighbor search FLANN by Marius Muja
is now shipped with OpenCV, and the OpenCV-style interface to the library
is included into cxcore. See cxcore.hpp and opencv/samples/c/find_obj.cpp
* The bundle adjustment engine has been contributed by PhaseSpace; see cvaux.hpp
* Added dense optical flow estimation function (based on the paper
"Two-Frame Motion Estimation Based on Polynomial Expansion" by G. Farnerback).
See cv::calcOpticalFlowFarneback and the C++ documentation
* Image warping operations (resize, remap, warpAffine, warpPerspective)
now all support bicubic and Lanczos interpolation.
* Most of the new linear and non-linear filtering operations (filter2D, sepFilter2D, erode, dilate ...)
support arbitrary border modes and can use the valid image pixels outside of the ROI
(i.e. the ROIs are not "isolated" anymore), see the C++ documentation.
* The data can now be saved to and loaded from GZIP-compressed XML/YML files, e.g.:
cvSave("a.xml.gz", my_huge_matrix);
- MLL:
* Added the Extremely Random Trees that train super-fast,
comparing to Boosting or Random Trees (by Maria Dimashova).
* The decision tree engine and based on it classes
(Decision Tree itself, Boost, Random Trees)
have been reworked and now:
+ they consume much less memory (up to 200% savings)
+ the training can be run in multiple threads (when OpenCV is built with OpenMP support)
+ the boosting classification on numerical variables is especially
fast because of the specialized low-overhead branch.
* mltest has been added. While far from being complete,
it contains correctness tests for some of the MLL classes.
- HighGUI:
* [Linux] The support for stereo cameras (currently Videre only) has been added.
There is now uniform interface for capturing video from two-, three- ... n-head cameras.
* Images can now be compressed to or decompressed from buffers in the memory,
see the C++ HighGUI reference manual
- Documentation:
* The reference manual has been converted from HTML to LaTeX (by James Bowman and Caroline Pantofaru),
so there is now:
+ opencv.pdf for reading offline
+ and the online up-to-date documentation
(as the result of LaTeX->Sphinx->HTML conversion) available at
http://opencv.willowgarage.com/documentation/index.html
- Samples, misc.:
* Better eye detector has been contributed by Shiqi Yu,
see opencv/data/haarcascades/*[lefteye|righteye]*.xml
* sample LBP cascade for the frontal face detection
has been created by Maria Dimashova,
see opencv/data/lbpcascades/lbpcascade_frontalface.xml
* Several high-quality body parts and facial feature detectors
have been contributed by Modesto Castrillon-Santana,
see opencv/data/haarcascades/haarcascade_mcs*.xml
>>> Optimization:
* Many of the basic functions and the image processing operations
(like arithmetic operations, geometric image transformations, filtering etc.)
have got SSE2 optimization, so they are several times faster.
- The model of IPP support has been changed. Now IPP is supposed to be
detected by CMake at the configuration stage and linked against OpenCV.
(In the beta it is not implemented yet though).
* PNG encoder performance improved by factor of 4 by tuning the parameters
>>> Bug fixes: <<<
TBD
(see http://sourceforge.net/tracker/?group_id=22870&atid=376677 of the list
of the closed and still opened bugs).
Many thanks to everybody who submitted bug reports and/or provided the patches!
>>> Known issues:
* configure+autotools based build is currently broken.
Please, use CMake.
* OpenCV bug tracker at SF still lists about 150 open bugs.
Some of them may be actually fixed already, and most of the remaining bugs
are going to be fixed by OpenCV 2.0 gold.
* IPP is not supported. As the new OpenCV includes a lot of SSE2 code,
it may be not such a serious problem, though.
The support (at least for most important functions that do not have
SSE2 optimization) will be returned in 2.0 gold.
* The documentation has been updated and improved a lot, but it still
needs quite a bit of work:
- some of the new functionality in cvaux is not described yet.
- the bibliography part is broken
- there are quite a few known bugs and typos there
- many of the hyperlinks are not working.
* The existing tests partly cover the new functionality
(via the old backward-compatibility OpenCV 1.x API), but the coverage is
not sufficient of course.
* The new-style Python interface is not included yet
Many of the problems will be addressed in 2.0 gold.
If you have found some specific problem, please, put the record to the bug tracker:
http://sourceforge.net/tracker/?group_id=22870
Better if the bug reports will include a small code sample in C++/python +
all the necessary data files needed to reproduce the problem.
</pre>
<hr><h2>1.1pre1</h2>
<p class="Blurb"><i>(October, 2008)</i></p>
<pre>
>>> New functionality/features: <<<
- General:
* Octave bindings have been added. See interfaces/swig/octave (for now, Linux only)
* [Windows] OpenCV is now built with VS2005 with SSE2 and OpenMP support
included (if you want to rebuild OpenCV using Express or
Standard Edition of VS, use _make\opencv.vs2005.no_openmp.sln).
* [Windows] Python bindings have been updated to use Python 2.6
* [Windows] cvcam has been removed (as videoInput is now supported by highgui)
- CXCORE, CV, CVAUX:
* Speeded-up Robust Features (SURF), contributed by Liu Liu.
see samples/c/find_obj.cpp and the documentation opencvref_cv.htm
* Many improvements in camera calibration:
- Added stereo camera calibration: cvStereoCalibrate, cvStereoRectify etc.
- Single camera calibration now uses Levenberg-Marquardt method and supports
extra flags to switch on/off optimization of individual camera parameters
- The optional 3rd radial distortion parameter (k3*r^6) is now supported in
every calibration-related function
* 2 stereo correspondence algorithms:
- very fast block matching method by Kurt Konolige
(processes the Tsukuba stereo pair in <10ms on Core2Duo laptop)
- slow but more accurate graph-cut based algorithm by Kolmogorov and Zabin
* Better homography estimation algorithms (RANSAC and LMEDs)
* new C++ template image classes contributed by Daniel Filip (Google inc.).
see opencv/cxcore/include/cvwimage.h
* Fast approximate nearest neighbor search (by Xavier Delacour)
* Codebook method for background/foreground segmentation (by Gary Bradski)
* Sort function (contributed by Shiqi Yu)
* [OpenCV+IPP] Face Detection (cvHaarDetectObjects) now runs much faster
(up to 2x faster) when using IPP 5.3 or higher.
* Much faster (~4x faster) fixed-point variant of cvRemap has been added
- MLL:
* Python bindings for MLL have been added. There are no samples yet.
- HighGUI:
* [Windows, 32bit] Added support for videoInput library.
Hence, cvcam is [almost] not needed anymore
* [Windows, 32bit] FFMPEG can now be used for video decoding/encoding
via ffopencv*.dll
* [Linux] Added unicap support
* Improved internal video capturing and video encoding APIs
- Documentation:
* OpenCV book has been published (sold separately :) see docs/index.htm)
- New samples (opencv/samples):
* Many Octave samples
* find_obj.cpp (SURF), bgfg_codebook.cpp (Codebook BG/FG segmentation),
stereo_calib.cpp (Stereo calibration and stereo correspondence)
>>> Bug fixes: <<<
Many thanks to everybody who submitted bug reports and/or provided the patches!
* added dma_unlisten to icvCloseCAM_DC1394 (thanks to Victor Benso)
* LMEDs algorithm for cvFindFundamentalMat estimation has been fixed
* Broken debug build of highgui in VS2005/2008 (SF #2056185, SF #1709435)
* cvFindChessboardCorners memory leak and incorrect size checks
(SF #1972896, SF #1910323)
* disabling GTK causes v4l runtime error (SF #2088102)
* cvsetmousecallback bug (SF #2053529)
* libhighgui needed deprecated "img_convert" replacement (SF #2011753)
* Segfault in createsamples caused by uninitialized variable (SF #1977989)
* Data Alignment Issue in bgfg_gaussmix (SF #1961755)
* libpng need to be updated (SF #1952793)
* cvCreateVideoWriter_Win32 - identifier not found (SF #1944254)
* Bug in cvmorph.cpp (SF #1908844)
* dilate (cvDilate) works bogus with default kernel (SF #1887130)
* CvEM non-default constructor declared but not defined (SF #1830346)
* cvFloodFill (in ver 1.0) Hangs (SF #1790565)
* double delete in CvImage (SF #1733437)
* cvFilter2D anchor default value is not working properly (SF #1713779)
* cvCvtColor - Bug? in converting HSV2RGB (SF #1676344)
* Invalid selection of the MKL-dll version in cvUseOptimized() (SF #1633017)
* ...
>>> Known issues:
* Borland compiler is not supported (but might work) in this update.
* 64-bit Windows is not supported (but might work) in this update.
* SF bug tracker still contains over 50 records of open bugs.
Many of them will be addressed in the next update.
</pre>
<hr><h2>1.0</h2>
<p class="Blurb"><i>(October, 2006)</i></p>
<pre>
>>> New functionality/features: <<<
- General:
* Windows installation package now includes precompiled Python module
* Borland C++ (v5.6+) makefiles re-added (see _make\make_all_bc.mak)
- CV:
* Inpainting was added, see samples/c/inpaint.cpp
(thanks to Alexander Kibkalo and Alexey Kalinichenko)
- MLL:
* Boosted tree classifiers added, see MLL reference manual
- HighGUI:
* Jpeg2000 and EXR support in highgui using JasPer and OpenEXR (thanks to Nils Hasler)
OpenEXR is not built-in to highgui on Windows by default. See
otherlibs/_graphics/readme.txt.
* >8-bit image input/output for PNG, Jpeg2000 and OpenEXR (thanks to Nils Hasler)
* Updated CMUcamera wrapper.
* Several V4L2 improvements and fixes
- New samples (opencv/samples):
* Camera calibration sample: calibrate.cpp
* Inpainting sample: inpaint.cpp
* Letter recognition using the existing database with
random trees/boosted trees/neural nets: leter_recog.cpp
* A few new Python samples.
- Tests:
* Most old cv tests have been rewritten/converted to use cxts instead of trs.
TRS is not used by the tests anymore.
>>> Bug fixes: <<<
Many thanks to everybody who submitted bug reports and/or provided the patches!
* Incorrect normalization in cvFindFundamentalMat (SF #1550855)
* Occasional cvGetQuadrangleSubPix crashes (SF #1549168)
* Occasional cvCalcOpticalFlowPyrLK crashes
* Internal GCC 3.x error in cvFloor/cvCeil (SF #1546657)
* Several Python-related bugs (SF #1570109, SF #1572800, SF #1543593)
* Bugs in contour processing/rendering (SF #1550889,
* x86-64 related bugs (SF #1526133, SF #1527997)
* OpenCV dispatcher tried to load old versions of IPP (pre 4.x)
that caused many failures (see SF #1555093, for example)
* Inaccurate results in some cases in cvFitEllipse, cvFitLine, cvHoughCircles.
* Severe bug in Bayesian classifier, broken regression tree in MLL
* Overflow in blurring filter
* cvSaveImage() modified saved images leading to potential problems in threaded apps.
* Numeric values in XML/YAML were emitted/parsed incorrectly
on some non-US locales in Linux
* VS2005 Express/Standard Editions could not build OpenCV
(due to missing OpenMP support)
* ...
>>> Known issues:
* Certain tests may fail on IA64 (Itanium), e.g.
gaussian filter, fundamental matrix estimation, chessboard detector.
...
</pre>
</body>
</html>

@ -1,116 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html><head>
<title>OpenCV Documentation</title>
</head><body>
<center><table cellspacing=0 cellpadding=5 bgcolor="#6a9bed">
<tr>
<td rowspan="2">
<img src="opencv-logo.png" width="200"></td>
<td>
<center><i><font color="#000000"><font size=+4>
Open Source Computer Vision Library
</font></font></i></center>
</td>
</tr>
</table></center>
<!-- <p align="center"><img src="opencv.jpg"></a></p>
<hr>-->
<h1>What is OpenCV</h1>
<p>OpenCV means Open Source Computer Vision Library.
It is a collection of C functions and a few C++ classes that implement
many popular Image Processing and Computer Vision algorithms.</p>
<hr>
<h1><a name="#ref">OpenCV Book</a></h1>
The official book for OpenCV is published by O'Reilly Press
Learning OpenCV Computer Vision with the OpenCV Library
by Gary Bradski and Adrian Kaehler
<a href="http://www.amazon.com/Learning-OpenCV-Computer-Vision-Library/dp/0596516134">
http://www.amazon.com/Learning-OpenCV-Computer-Vision-Library/dp/0596516134
</a>
<p>
This book is:
<ol>
<li>A tutorial on computer vision in general
<li>A user's guide to OpenCV
<li>A source of useful working sample code and detailed function descriptions.
</ol>
<hr>
<h1>The key features</h1>
<p>OpenCV provides cross-platform middle-to-high level API that includes
about 300 functions and a few C++ classes. Also there are
constantly improving Python bindings to OpenCV, see
interfaces/swig/python and samples/python.
OpenCV has no strict dependencies on external libraries,
though it can use some (such as libjpeg, ffmpeg, GTK+ etc.)
when it is possible.</p>
<p>OpenCV is free for both non-commercial and commercial use
(see the <a href="license.txt">license</a> for details).</p>
<p><a name="#ipp">OpenCV can be built with Intel&reg; Integrated Performance
Primitives (IPP).</a>
This makes it fast on all the architectures supported by the library,
where the optimal code for each host architecture is chosen at runtime.
More information about IPP can be retrieved at
<a href="http://www.intel.com/software/products/ipp/index.htm">
http://www.intel.com/software/products/ipp/index.htm</a></p>
Then, OpenCV itself can be built with <a href="http://www.threadingbuildingblocks.org/">TBB</a>
support, and, starting with v2.0,
OpenCV also includes SSE2-optimized code, so many of the functions run significantly
faster on the modern 32-bit x86 and 64-bit x64 platforms, and even faster on dual-,
quad- and many-core systems.
<hr>
<h1>Who created it</h1>
The list of authors and major contributors can be found at
<a href="http://opencv.willowgarage.com/wiki/Contributors">http://opencv.willowgarage.com/wiki/Contributors</a>.</p>
<hr>
<h1>What's New</h1>
<p>See the <a href="ChangeLog.htm">ChangeLog</a>.
<hr>
<h1>Where to get OpenCV</h1>
<p>Go <a href="http://www.sourceforge.net/projects/opencvlibrary">http://www.sourceforge.net/projects/opencvlibrary</a>.
If it does not work, type "OpenCV" in
<a href="http://www.google.com/search?hl=en&ie=UTF-8&q=opencv+computer+vision&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=">Google (http://www.google.com)</a>.</p>
<hr>
<h1>How to build it</h1>
<p>See the installation guide: <a href="http://opencv.willowgarage.com/wiki/InstallGuide">http://opencv.willowgarage.com/wiki/InstallGuide</a>.
<hr>
<h1><a name="troubleshooting">If you have a problem with installing/running/using OpenCV</a></h1>
<ol>
<li>Visit OpenCV Wiki-pages at
<a href="http://opencv.willowgarage.com/wiki/">http://opencv.willowgarage.com/wiki/</a> and
look for the information there (and/or add it when you have found a solution)
<li>Search through OpenCV archives at www.yahoogroups.com
(<a href="http://groups.yahoo.com/group/OpenCV/">http://groups.yahoo.com/group/OpenCV/</a>)
<li>Join OpenCV mailing list at yahoo groups (see FAQs on how to do it) and mail your questions
(the mailing list will probably migrate to
<a href="http://www.sourceforge.net/projects/opencvlibrary">OpenCV's SourceForge site</a>)
<li>Look at the OpenCV sample code, read the reference manual <a href="opencv.pdf">offline in PDF</a>
or online (<a href="http://opencv.willowgarage.com/documentation/c/index.html">C</a>,
<a href="http://opencv.willowgarage.com/documentation/cpp/index.html">C++</a> and
<a href="http://opencv.willowgarage.com/documentation/python/index.html">Python</a>).
</ol>
</body></html>

@ -46,9 +46,9 @@ copyright = u'2010, authors'
# built documents.
#
# The short X.Y version.
version = '2.1'
version = '2.2'
# The full version, including alpha/beta/rc tags.
release = '2.1'
release = '2.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

File diff suppressed because it is too large Load Diff

@ -68,8 +68,8 @@ backgroundcolor=\color{shadecolor}
%%%%%%%%%%%%%%%
\title{OpenCV Reference Manual} % used by \maketitle
\author{v2.1} % used by \maketitle
\date{March 18, 2010} % used by \maketitle
\author{v2.2} % used by \maketitle
\date{December, 2010} % used by \maketitle
\begin{document}
\maketitle % automatic title!

Binary file not shown.

@ -134,7 +134,7 @@
\setlength{\columnsep}{2pt}
\begin{center}
\Large{\textbf{OpenCV 2.1 Cheat Sheet (C++)}} \\
\Large{\textbf{OpenCV 2.2 Cheat Sheet (C++)}} \\
\end{center}
\newlength{\MyLen}
\settowidth{\MyLen}{\texttt{letterpaper}/\texttt{a4paper} \ }
@ -153,17 +153,17 @@
\section{Key OpenCV Classes}
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#point}{Point\_}} & Template 2D point class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#point3}{Point3\_}} & Template 3D point class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#size}{Size\_}} & Template size (width, height) class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#vec}{Vec}} & Template short vector class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#scalar}{Scalar}} & 4-element vector \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#rect}{Rect}} & Rectangle \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#range}{Range}} & Integer value range \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#mat}{Mat}} & 2D dense array (used as both a matrix or an image)\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#matnd}{MatND}} & Multi-dimensional dense array \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#sparsemat}{SparseMat}} & Multi-dimensional sparse array \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#ptr}{Ptr}} & Template smart pointer class
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#point}{Point\_}} & Template 2D point class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#point3}{Point3\_}} & Template 3D point class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#size}{Size\_}} & Template size (width, height) class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#vec}{Vec}} & Template short vector class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#vec}{Matx}} & Template small matrix class \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#scalar}{Scalar}} & 4-element vector \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#rect}{Rect}} & Rectangle \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#range}{Range}} & Integer value range \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#mat}{Mat}} & 2D or multi-dimensional dense array (can be used to store matrices, images, histograms, feature descriptors, voxel volumes etc.)\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#sparsemat}{SparseMat}} & Multi-dimensional sparse array \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#ptr}{Ptr}} & Template smart pointer class
\end{tabular}
\section{Matrix Basics}
@ -173,7 +173,7 @@
\> \texttt{Mat image(240, 320, CV\_8UC3);} \\
\textbf{[Re]allocate a pre-declared matrix}\\
\> \texttt{image.\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::create}{create}(480, 640, CV\_8UC3);}\\
\> \texttt{image.\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::create}{create}(480, 640, CV\_8UC3);}\\
\textbf{Create a matrix initialized with a constant}\\
\> \texttt{Mat A33(3, 3, CV\_32F, Scalar(5));} \\
@ -189,8 +189,8 @@
\> \texttt{Mat B22 = Mat(2, 2, CV\_32F, B22data).clone();}\\
\textbf{Initialize a random matrix}\\
\> \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-randu}{randu}(image, Scalar(0), Scalar(256)); }\textit{// uniform dist}\\
\> \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-randn}{randn}(image, Scalar(128), Scalar(10)); }\textit{// Gaussian dist}\\
\> \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-randu}{randu}(image, Scalar(0), Scalar(256)); }\textit{// uniform dist}\\
\> \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-randn}{randn}(image, Scalar(128), Scalar(10)); }\textit{// Gaussian dist}\\
\textbf{Convert matrix to/from other structures}\\
\>\textbf{(without copying the data)}\\
@ -230,32 +230,32 @@
\section{Matrix Manipulations: Copying, Shuffling, Part Access}
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::copyTo}{src.copyTo(dst)}} & Copy matrix to another one \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::convertTo}{src.convertTo(dst,type,scale,shift)}} & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Scale and convert to another datatype \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::clone}{m.clone()}} & Make deep copy of a matrix \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::reshape}{m.reshape(nch,nrows)}} & Change matrix dimensions and/or number of channels without copying data \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::copyTo}{src.copyTo(dst)}} & Copy matrix to another one \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::convertTo}{src.convertTo(dst,type,scale,shift)}} & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Scale and convert to another datatype \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::clone}{m.clone()}} & Make deep copy of a matrix \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::reshape}{m.reshape(nch,nrows)}} & Change matrix dimensions and/or number of channels without copying data \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::row}{m.row(i)}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::col}{m.col(i)}} & Take a matrix row/column \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::row}{m.row(i)}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::col}{m.col(i)}} & Take a matrix row/column \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::rowRange}{m.rowRange(Range(i1,i2))}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::colRange}{m.colRange(Range(j1,j2))}} & \ \ \ \ \ \ \ Take a matrix row/column span \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::rowRange}{m.rowRange(Range(i1,i2))}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::colRange}{m.colRange(Range(j1,j2))}} & \ \ \ \ \ \ \ Take a matrix row/column span \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::diag}{m.diag(i)}} & Take a matrix diagonal \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::diag}{m.diag(i)}} & Take a matrix diagonal \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#index-1245}{m(Range(i1,i2),Range(j1,j2)), m(roi)}} & \ \ \ \ \ \ \ \ \ \ \ \ \ Take a submatrix \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#index-1245}{m(Range(i1,i2),Range(j1,j2)), m(roi)}} & \ \ \ \ \ \ \ \ \ \ \ \ \ Take a submatrix \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html\#Mat::repeat}{m.repeat(ny,nx)}} & Make a bigger matrix from a smaller one \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html\#Mat::repeat}{m.repeat(ny,nx)}} & Make a bigger matrix from a smaller one \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-flip}{flip(src,dst,dir)}} & Reverse the order of matrix rows and/or columns \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-flip}{flip(src,dst,dir)}} & Reverse the order of matrix rows and/or columns \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-split}{split(...)}} & Split multi-channel matrix into separate channels \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-split}{split(...)}} & Split multi-channel matrix into separate channels \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-merge}{merge(...)}} & Make a multi-channel matrix out of the separate channels \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-merge}{merge(...)}} & Make a multi-channel matrix out of the separate channels \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-mixchannels}{mixChannels(...)}} & Generalized form of split() and merge() \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-mixchannels}{mixChannels(...)}} & Generalized form of split() and merge() \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-randshuffle}{randShuffle(...)}} & Randomly shuffle matrix elements \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-randshuffle}{randShuffle(...)}} & Randomly shuffle matrix elements \\
\end{tabular}
@ -278,15 +278,15 @@ other matrix operations, such as
\begin{itemize}
\item
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-add}{add()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-subtract}{subtract()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-multiply}{multiply()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-divide}{divide()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-absdiff}{absdiff()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#bitwise-and}{bitwise\_and()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#bitwise-or}{bitwise\_or()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#bitwise-xor}{bitwise\_xor()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-max}{max()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-min}{min()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-compare}{compare()}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-add}{add()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-subtract}{subtract()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-multiply}{multiply()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-divide}{divide()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-absdiff}{absdiff()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#bitwise-and}{bitwise\_and()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#bitwise-or}{bitwise\_or()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#bitwise-xor}{bitwise\_xor()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-max}{max()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-min}{min()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-compare}{compare()}}
-- correspondingly, addition, subtraction, element-wise multiplication ... comparison of two matrices or a matrix and a scalar.
@ -312,49 +312,49 @@ Exa\=mple. \href{http://en.wikipedia.org/wiki/Alpha_compositing}{Alpha compositi
\item
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-sum}{sum()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-mean}{mean()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-mean-stddev}{meanStdDev()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-norm}{norm()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-countnonzero}{countNonZero()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-minmaxloc}{minMaxLoc()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-sum}{sum()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-mean}{mean()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-mean-stddev}{meanStdDev()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-norm}{norm()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-countnonzero}{countNonZero()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-minmaxloc}{minMaxLoc()}},
-- various statistics of matrix elements.
\item
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-exp}{exp()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-log}{log()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-pow}{pow()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-sqrt}{sqrt()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-carttopolar}{cartToPolar()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-polarToCart}{polarToCart()}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-exp}{exp()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-log}{log()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-pow}{pow()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-sqrt}{sqrt()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-carttopolar}{cartToPolar()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-polarToCart}{polarToCart()}}
-- the classical math functions.
\item
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-scaleadd}{scaleAdd()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-transpose}{transpose()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-gemm}{gemm()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-invert}{invert()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-solve}{solve()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-determinant}{determinant()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-trace}{trace()}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-eigen}{eigen()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-SVD}{SVD}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-scaleadd}{scaleAdd()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-transpose}{transpose()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-gemm}{gemm()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-invert}{invert()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-solve}{solve()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-determinant}{determinant()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-trace}{trace()}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-eigen}{eigen()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-SVD}{SVD}},
-- the algebraic functions + SVD class.
\item
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-dft}{dft()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-idft}{idft()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-dct}{dct()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html\#cv-idct}{idct()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-dft}{dft()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-idft}{idft()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-dct}{dct()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html\#cv-idct}{idct()}},
-- discrete Fourier and cosine transformations
\end{itemize}
For some operations a more convenient \href{http://opencv.willowgarage.com/documentation/cpp/basic_structures.html#matrix-expressions}{algebraic notation} can be used, for example:
For some operations a more convenient \href{http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html#matrix-expressions}{algebraic notation} can be used, for example:
\begin{tabbing}
\texttt{Mat}\={} \texttt{delta = (J.t()*J + lambda*}\\
\>\texttt{Mat::eye(J.cols, J.cols, J.type()))}\\
@ -368,20 +368,20 @@ implements the core of Levenberg-Marquardt optimization algorithm.
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-filter2d}{filter2D()}} & Non-separable linear filter \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-filter2d}{filter2D()}} & Non-separable linear filter \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-sepfilter2d}{sepFilter2D()}} & Separable linear filter \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-sepfilter2d}{sepFilter2D()}} & Separable linear filter \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-blur}{boxFilter()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-gaussianblur}{GaussianBlur()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-medianblur}{medianBlur()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-bilateralfilter}{bilateralFilter()}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-blur}{boxFilter()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-gaussianblur}{GaussianBlur()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-medianblur}{medianBlur()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-bilateralfilter}{bilateralFilter()}}
& Smooth the image with one of the linear or non-linear filters \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-sobel}{Sobel()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-scharr}{Scharr()}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-sobel}{Sobel()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-scharr}{Scharr()}}
& Compute the spatial image derivatives \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-laplacian}{Laplacian()}} & compute Laplacian: $\Delta I = \frac{\partial ^ 2 I}{\partial x^2} + \frac{\partial ^ 2 I}{\partial y^2}$ \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-laplacian}{Laplacian()}} & compute Laplacian: $\Delta I = \frac{\partial ^ 2 I}{\partial x^2} + \frac{\partial ^ 2 I}{\partial y^2}$ \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-erode}{erode()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/image_filtering.html\#cv-dilate}{dilate()}} & Erode or dilate the image \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-erode}{erode()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_image_filtering.html\#cv-dilate}{dilate()}} & Erode or dilate the image \\
\end{tabular}
@ -396,17 +396,17 @@ Exa\=mple. Filter image in-place with a 3x3 high-pass kernel\\
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html\#cv-resize}{resize()}} & Resize image \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_geometric_image_transformations.html\#cv-resize}{resize()}} & Resize image \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html\#cv-getrectsubpix}{getRectSubPix()}} & Extract an image patch \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_geometric_image_transformations.html\#cv-getrectsubpix}{getRectSubPix()}} & Extract an image patch \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html\#cv-warpaffine}{warpAffine()}} & Warp image affinely\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_geometric_image_transformations.html\#cv-warpaffine}{warpAffine()}} & Warp image affinely\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html\#cv-warpperspective}{warpPerspective()}} & Warp image perspectively\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_geometric_image_transformations.html\#cv-warpperspective}{warpPerspective()}} & Warp image perspectively\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html\#cv-remap}{remap()}} & Generic image warping\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_geometric_image_transformations.html\#cv-remap}{remap()}} & Generic image warping\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html\#cv-convertmaps}{convertMaps()}} & Optimize maps for a faster remap() execution\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_geometric_image_transformations.html\#cv-convertmaps}{convertMaps()}} & Optimize maps for a faster remap() execution\\
\end{tabular}
@ -420,21 +420,21 @@ Example. Decimate image by factor of $\sqrt{2}$:\\
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html\#cvtColor}{cvtColor()}} & Convert image from one color space to another \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html\#cvtColor}{cvtColor()}} & Convert image from one color space to another \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html\#threshold}{threshold()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html\#adaptivethreshold}{adaptivethreshold()}} & Convert grayscale image to binary image using a fixed or a variable threshold \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html\#threshold}{threshold()}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html\#adaptivethreshold}{adaptivethreshold()}} & Convert grayscale image to binary image using a fixed or a variable threshold \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html\#floodfill}{floodFill()}} & Find a connected component using region growing algorithm\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html\#floodfill}{floodFill()}} & Find a connected component using region growing algorithm\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html\#floodfill}{integral()}} & Compute integral image \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html\#floodfill}{integral()}} & Compute integral image \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html\#distancetransform}{distanceTransform()}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html\#distancetransform}{distanceTransform()}}
& build distance map or discrete Voronoi diagram for a binary image. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html\#floodfill}{watershed()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/miscellaneous_image_transformations.html\#grabcut}{grabCut()}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html\#floodfill}{watershed()}},
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_miscellaneous_image_transformations.html\#grabcut}{grabCut()}}
& marker-based image segmentation algorithms.
See the samples \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/watershed.cpp}{watershed.cpp}} and \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/grabcut.c}{grabcut.cpp}}.
See the samples \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/watershed.cpp}{watershed.cpp}} and \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/grabcut.cpp}{grabcut.cpp}}.
\end{tabular}
@ -443,13 +443,13 @@ Example. Decimate image by factor of $\sqrt{2}$:\\
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/histograms.html\#calchist}{calcHist()}} & Compute image(s) histogram \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_histograms.html\#calchist}{calcHist()}} & Compute image(s) histogram \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/histograms.html\#calcbackproject}{calcBackProject()}} & Back-project the histogram \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_histograms.html\#calcbackproject}{calcBackProject()}} & Back-project the histogram \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/histograms.html\#equalizehist}{equalizeHist()}} & Normalize image brightness and contrast\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_histograms.html\#equalizehist}{equalizeHist()}} & Normalize image brightness and contrast\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/histograms.html\#comparehist}{compareHist()}} & Compare two histograms\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/imgproc_histograms.html\#comparehist}{compareHist()}} & Compare two histograms\\
\end{tabular}
@ -463,12 +463,12 @@ Example. Compute Hue-Saturation histogram of an image:\\
\end{tabbing}
\subsection{Contours}
See \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/contours.cpp}{contours.cpp}} and \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/squares.c}{squares.c}}
See \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/contours.cpp}{contours.cpp}} and \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/squares.cpp}{squares.cpp}}
samples on what are the contours and how to use them.
\section{Data I/O}
\href{http://opencv.willowgarage.com/documentation/cpp/xml_yaml_persistence.html\#filestorage}{XML/YAML storages} are collections (possibly nested) of scalar values, structures and heterogeneous lists.
\href{http://opencv.willowgarage.com/documentation/cpp/core_xml_yaml_persistence.html\#filestorage}{XML/YAML storages} are collections (possibly nested) of scalar values, structures and heterogeneous lists.
\begin{tabbing}
\textbf{Wr}\=\textbf{iting data to YAML (or XML)}\\
@ -520,9 +520,9 @@ samples on what are the contours and how to use them.
\begin{tabbing}
\textbf{Wr}\=\textbf{iting and reading raster images}\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html\#cv-imwrite}{imwrite}{imwrite}("myimage.jpg", image);}\\
\texttt{Mat image\_color\_copy = \href{http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html\#cv-imread}{imread}("myimage.jpg", 1);}\\
\texttt{Mat image\_grayscale\_copy = \href{http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html\#cv-imread}{imread}("myimage.jpg", 0);}\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/highgui_reading_and_writing_images_and_video.html\#cv-imwrite}{imwrite}{imwrite}("myimage.jpg", image);}\\
\texttt{Mat image\_color\_copy = \href{http://opencv.willowgarage.com/documentation/cpp/highgui_reading_and_writing_images_and_video.html\#cv-imread}{imread}("myimage.jpg", 1);}\\
\texttt{Mat image\_grayscale\_copy = \href{http://opencv.willowgarage.com/documentation/cpp/highgui_reading_and_writing_images_and_video.html\#cv-imread}{imread}("myimage.jpg", 0);}\\
\end{tabbing}
\emph{The functions can read/write images in the following formats: \textbf{BMP (.bmp), JPEG (.jpg, .jpeg), TIFF (.tif, .tiff), PNG (.png), PBM/PGM/PPM (.p?m), Sun Raster (.sr), JPEG 2000 (.jp2)}. Every format supports 8-bit, 1- or 3-channel images. Some formats (PNG, JPEG 2000) support 16 bits per channel.}
@ -543,61 +543,61 @@ samples on what are the contours and how to use them.
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/user_interface.html\#cv-namedwindow}{namedWindow(winname,flags)}} & \ \ \ \ \ \ \ \ \ \ Create named highgui window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/highgui_user_interface.html\#cv-namedwindow}{namedWindow(winname,flags)}} & \ \ \ \ \ \ \ \ \ \ Create named highgui window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/user_interface.html\#cv-destroywindow}{destroyWindow(winname)}} & \ \ \ Destroy the specified window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/highgui_user_interface.html\#cv-destroywindow}{destroyWindow(winname)}} & \ \ \ Destroy the specified window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/user_interface.html\#cv-imshow}{imshow(winname, mtx)}} & Show image in the window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/highgui_user_interface.html\#cv-imshow}{imshow(winname, mtx)}} & Show image in the window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/user_interface.html\#cv-waitKey}{waitKey(delay)}} & Wait for a key press during the specified time interval (or forever). Process events while waiting. \emph{Do not forget to call this function several times a second in your code.} \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/highgui_user_interface.html\#cv-waitKey}{waitKey(delay)}} & Wait for a key press during the specified time interval (or forever). Process events while waiting. \emph{Do not forget to call this function several times a second in your code.} \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/user_interface.html\#cv-createTrackbar}{createTrackbar(...)}} & Add trackbar (slider) to the specified window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/highgui_user_interface.html\#cv-createTrackbar}{createTrackbar(...)}} & Add trackbar (slider) to the specified window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/user_interface.html\#cv-setmousecallback}{setMouseCallback(...)}} & \ \ Set the callback on mouse clicks and movements in the specified window \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/highgui_user_interface.html\#cv-setmousecallback}{setMouseCallback(...)}} & \ \ Set the callback on mouse clicks and movements in the specified window \\
\end{tabular}
See \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/camshiftdemo.c}{camshiftdemo.c}} and other \href{https://code.ros.org/svn/opencv/trunk/opencv/samples/}{OpenCV samples} on how to use the GUI functions.
See \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/camshiftdemo.cpp}{camshiftdemo.cpp}} and other \href{https://code.ros.org/svn/opencv/trunk/opencv/samples/}{OpenCV samples} on how to use the GUI functions.
\section{Camera Calibration, Pose Estimation and Depth Estimation}
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-calibratecamera}{calibrateCamera()}} & Calibrate camera from several views of a calibration pattern. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-calibratecamera}{calibrateCamera()}} & Calibrate camera from several views of a calibration pattern. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-findchessboardcorners}{findChessboardCorners()}} & \ \ \ \ \ \ Find feature points on the checkerboard calibration pattern. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-findchessboardcorners}{findChessboardCorners()}} & \ \ \ \ \ \ Find feature points on the checkerboard calibration pattern. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-solvepnp}{solvePnP()}} & Find the object pose from the known projections of its feature points. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-solvepnp}{solvePnP()}} & Find the object pose from the known projections of its feature points. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-stereocalibrate}{stereoCalibrate()}} & Calibrate stereo camera. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-stereocalibrate}{stereoCalibrate()}} & Calibrate stereo camera. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-stereorectify}{stereoRectify()}} & Compute the rectification transforms for a calibrated stereo camera.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-stereorectify}{stereoRectify()}} & Compute the rectification transforms for a calibrated stereo camera.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-initundistortrectifymap}{initUndistortRectifyMap()}} & \ \ \ \ \ \ Compute rectification map (for \texttt{remap()}) for each stereo camera head.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-initundistortrectifymap}{initUndistortRectifyMap()}} & \ \ \ \ \ \ Compute rectification map (for \texttt{remap()}) for each stereo camera head.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-StereoBM}{StereoBM}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-StereoSGBM}{StereoSGBM}} & The stereo correspondence engines to be run on rectified stereo pairs.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-StereoBM}{StereoBM}}, \texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-StereoSGBM}{StereoSGBM}} & The stereo correspondence engines to be run on rectified stereo pairs.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-reprojectimageto3d}{reprojectImageTo3D()}} & Convert disparity map to 3D point cloud.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-reprojectimageto3d}{reprojectImageTo3D()}} & Convert disparity map to 3D point cloud.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html\#cv-findhomography}{findHomography()}} & Find best-fit perspective transformation between two 2D point sets. \\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html\#cv-findhomography}{findHomography()}} & Find best-fit perspective transformation between two 2D point sets. \\
\end{tabular}
To calibrate a camera, you can use \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/calibration.cpp}{calibration.cpp}} or
\texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/stereo\_calib.cpp}{stereo\_calib.cpp}} samples.
To calibrate a camera, you can use \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/calibration.cpp}{calibration.cpp}} or
\texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/stereo\_calib.cpp}{stereo\_calib.cpp}} samples.
To get the disparity maps and the point clouds, use
\texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/stereo\_match.cpp}{stereo\_match.cpp}} sample.
\texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/stereo\_match.cpp}{stereo\_match.cpp}} sample.
\section{Object Detection}
\begin{tabular}{@{}p{\the\MyLen}%
@{}p{\linewidth-\the\MyLen}@{}}
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/object_detection.html\#matchTemplate}{matchTemplate}} & Compute proximity map for given template.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/objdetect__object_detection.html\#matchTemplate}{matchTemplate}} & Compute proximity map for given template.\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/object_detection.html\#CascadeClassifier}{CascadeClassifier}} & Viola's Cascade of Boosted classifiers using Haar or LBP features. Suits for detecting faces, facial features and some other objects without diverse textures. See \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/facedetect.cpp}{facedetect.cpp}}\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/objdetect__object_detection.html\#CascadeClassifier}{CascadeClassifier}} & Viola's Cascade of Boosted classifiers using Haar or LBP features. Suits for detecting faces, facial features and some other objects without diverse textures. See \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/facedetect.cpp}{facedetect.cpp}}\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/object_detection.html\#HOGDescriptor}{HOGDescriptor}} & N. Dalal's object detector using Histogram-of-Oriented-Gradients (HOG) features. Suits for detecting people, cars and other objects with well-defined silhouettes. See \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/c/peopledetect.cpp}{peopledetect.cpp}}\\
\texttt{\href{http://opencv.willowgarage.com/documentation/cpp/objdetect__object_detection.html\#HOGDescriptor}{HOGDescriptor}} & N. Dalal's object detector using Histogram-of-Oriented-Gradients (HOG) features. Suits for detecting people, cars and other objects with well-defined silhouettes. See \texttt{\href{https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/peopledetect.cpp}{peopledetect.cpp}}\\
\end{tabular}

@ -48,8 +48,8 @@
#define __OPENCV_VERSION_HPP__
#define CV_MAJOR_VERSION 2
#define CV_MINOR_VERSION 1
#define CV_SUBMINOR_VERSION 1
#define CV_MINOR_VERSION 2
#define CV_SUBMINOR_VERSION 0
#define CVAUX_STR_EXP(__A) #__A
#define CVAUX_STR(__A) CVAUX_STR_EXP(__A)