Opencv2.4 Beta is out
As usual, we created 2.4 branch in our repository (http://code.opencv.org/svn/opencv/branches/2.4), where we will further stabilize the code. You can check this branch periodically, before as well as after 2.4 release.
- At the age of 12, OpenCV got its own home! http://code.opencv.org is now the primary site for OpenCV development and http://opencv.org (to be launched soon) will be the official OpenCV user site.
- Some of the old functionality from the modules
objdetecthas been moved to legacy.
- CMake scripts have been substantially modified. Now it’s very easy to add new modules – just put the directory with include, src, doc and test sub-directories to the modules directory, create a very simple
CMakeLists.txtand your module will be built as a part of OpenCV. Also, it’s possible to exclude certain modules from build (the CMake variables "
BUILD_opencv_<modulename>" control that).
- The new very base
cv::Algorithmclass has been introduced. It’s planned to be the base of all the "non-trivial" OpenCV functionality. All Algorithm-based classes have the following features:
- "virtual constructor", i.e. an algorithm instance can be created by name;
- there is a list of available algorithms;
- one can retrieve and set algorithm parameters by name;
- one can save algorithm parameters to XML/YAML file and then load them.
- A new ffmpeg wrapper has been created that features multi-threaded decoding, more robust video positioning etc. It’s used with ffmpeg starting with 0.7.x versions.
features2dAPI has been cleaned up. There are no more numerous classes with duplicated functionality. The base classes
DescriptorExtractorare now derivatives of
cv::Algorithm. There is also the base
Feature2D, using which you can detect keypoints and compute the descriptors in a single call. This is also more efficient.
- SIFT and SURF have been moved to a separate module named
nonfreeto indicate possible legal issues of using those algorithms in user applications. Also, SIFT performance has been substantially improved (by factor of 3-4x).
- The current state-of-art textureless detection algorithm, Line-Mod by S. Hinterstoisser, has been contributed by Patrick Mihelich. See
- 3 face recognition algorithms have been contributed by Philipp Wagner. Please, check
- 2 algorithms for solving PnP problem have been added. Please, check
LogPolarimplementation (that uses Blind-Spot model) has been contributed by Fabio Solari and Manuela Chessa, see
- A stub module
photohas been created to support a quickly growing "computational photography" area. Currently, it only contains
inpaintingalgorithm, moved from
imgproc, but it’s planned to add much more functionality.
- Another module
videostab(beta version) has been added that solves a specific yet very important task of video stabilization. The module is under active development. Please, check
findContourscan now find contours on a 32-bit integer image of labels (not only on a black-and-white 8-bit image). This is a step towards more convenient connected component analysis.
Cannyedge detector can now be run on color images, which results in better edge maps
- Python bindings can now be used within python threads, so one can write multi-threaded computer vision applications in Python.
OpenCV on GPU
- Different Optical Flow algorithms have been added:
- Brox (contributed by NVidia)
- PyrLK – both Dense and Sparse variations
- New feature detectors and descriptors:
- FAST/ORB which is patent free replacement of SURF.
- Overall GPU module enhancements:
- The module now requires CUDA 4.1 or later;
- Improved similarity of results between CPU and GPU;
- Added border extrapolation support for many functions;
- Improved performance.
- Matrix multiplication on GPU (wrapper for the CUBLAS library). This is optional, user need to compile OpenCV with CUBLAS support.
OpenGL back-endhas been implemented for
highguimodule, that allows to display
GpuMatdirectly without downloading them to CPU.
See the Android Release Notes.
- A few OpenCV functions, like color conversion, morphology, data type conversions, brute-force feature matcher have been optimized using TBB and/or SSE intrinisics.
- Along with regression tests, now many OpenCV functions have got performance tests. Now for most modules one can build
opencv_perf_<modulename>executables that run various functions from the particular module and produce a XML file. Note that if you want to run those tests, as well as the normal regression tests, you will need to get (a rather big)http://code.opencv.org/svn/opencv/trunk/opencv_extra directory and set environment variable
- In this version we fixed literally hundreds of bugs. Please, check http://code.opencv.org/projects/opencv/versions/1 for a list of fixed bugs.
- When OpenCV is built statically, dynamically created classes (via
Algorithm::create) can fail because linker excludes the "unused" object files. To avoid this problem, create classes explicitly, e.g
1 Ptr<DescriptorExtractor> d = new BriefDescriptorExtractor;