加了line-mode,比较有吸引力。
April, 2012
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.
Common changes¶
- 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
imgproc,video,calib3d,features2d,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).
New functionality
- 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 classesFeatureDetectorandDescriptorExtractorare now derivatives ofcv::Algorithm. There is also the baseFeature2D, 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
objdetect/objdetect.hpp, classDetector.
- 3 face recognition algorithms have been contributed by Philipp Wagner. Please, check
opencv/contrib/contrib.hpp,FaceRecognizerclass, andopencv/samples/cpp/facerec_demo.cpp.
- 2 algorithms for solving PnP problem have been added. Please, check
flagsparameter insolvePnPandsolvePnPRansacfunctions.
- Enhanced
LogPolarimplementation (that uses Blind-Spot model) has been contributed by Fabio Solari and Manuela Chessa, seeopencv/contrib/contrib.hpp,LogPolar_*classes andopencv/samples/cpp/logpolar_bsm.cppsample.
- A stub module
photohas been created to support a quickly growing "computational photography" area. Currently, it only containsinpaintingalgorithm, moved fromimgproc, 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, checkopencv/samples/cpp/videostab.cppsample.
-
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
- Farneback
- New feature detectors and descriptors:
GoodFeaturesToTrack- 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.
-
pyrUp/pyrDownimplementations.
- 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 forhighguimodule, that allows to displayGpuMatdirectly without downloading them to CPU.
OpenCV4Android
See the Android Release Notes.
Performance
- 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 variableOPENCV_TEST_DATA_PATHto "<your_copy_of_opencv_extra>/testdata".
Bug fixes
- 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.
Known issues
- 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.g1 Ptr<DescriptorExtractor> d = new BriefDescriptorExtractor;