OpenCV for Android Release Notes
Change logs from OpenCV's official releases -- what is new for Android developers in the new release
2.3.1 (beta2)
August, 2011
Modifications and improvements since 2.3.1 beta1
Java API is greatly expanded. Currently about 700 unique OpenCV methods/functions are available in Java. Here is a Java API testing report for beta2 release.
- Java names for some functions and classes are changed for better compliance with Java coding guidelines
org.opencv.android class is moved/renamed to org.opencv.android.Utils
org.opencv.utils is class is moved/renamed to org.opencv.utils.Converters
- Helper methods useful on Android platform are added:
org.opencv.android.Utils.loadResource - can read your image as Mat directly from project resources
org.opencv.android.Utils.exportResource - return full disc path to your drawable or raw resource (method copies resource to private application storage)
- Java names for some functions and classes are changed for better compliance with Java coding guidelines
- Fixed numerous bugs in Java bindings.
- Color conversion constant COLOR_YUV420i2RGBA is replaced with COLOR_YUV420sp2RGBA which is correct name. Please note that COLOR_YUV420i2RGBA is also supported by OpenCV but it is another format which is not default for Android.
- Added OpenCV native camera support for armv5te devices (but not for emulator).
Added two detailed tutorials for quick start of development with OpenCV for Android (Please, take a look at our basic and advanced tutorials)
Also Android pack includes all the improvements from the major OpenCV 2.3.1. See OpenCV Change Log for the details.
Known Problems/Limitations
- Native camera for Android 2.2 fails after initialization on some phones. (But we have never seen such problem for devices running Android 2.3 or 3.x)
- OpenCV Mat to Android Bitmap conversion and vice versa is supported only for ARGB_8888 Bitmap and CV_8UC4 Mat formats.
2.3.1 (beta1)
July, 2011
What was done in release 2.3.1 (beta1)
- Created Android Java API for OpenCV. 332 OpenCV functions are now available in Java. We implemented an automatic wrappers generator, which is embedded into OpenCV build process. This integration allows to easily update Java wrappers.
Javadoc documentation. Official OpenCV documentation http://opencv.itseez.com/trunk is parsed and inserted into generated Java wrappers. This enables Eclipse to show you all required information about OpenCV functions.
OpenCV native camera interface for Android API 8 and higher. See VideoCapture class for video capturing documentation.
- Made OpenCV distribution model more convenient for Android developers. OpenCV for Android is distributed as a tarball, containing Eclipse library project for development in pure Java and an OpenCV.mk file for compilation with NDK. Samples are also added to this package.
Updated set of samples. These set contains several tutorials, which allow developer to start from high-level Java interface and to continue with advanced native programming techniques. There are also some additional samples: image manipulations with OpenCV, basic face detection and a simple computer game "fifteen puzzle". Please note that older samples are removed and not supported anymore.
Continuous integration. Android build is included into major OpenCV CI infrastructure http://buildbot.itseez.com. Set of unit-tests for Java API had been developed. Every night buildbot checkouts the latest code, builds it and runs a set of native and Java OpenCV tests.
- Other updates
- Windows/Linux/MacOS support as a host development platform.
- Updated OpenCV build system.
Known Problems/Limitations
- Android for OpenCV doesn't support multi-threading at the moment. The good news is that Intel TBB had been build for Android and tested with some OpenCV samples. But the integration is yet ready.
- Optimization. Some OpenCV functions work slowly on ARM, we know it and it is our top priority for the second half of the year. OpenCV will be deeply optimized for NVidia Tegra platform.
- Java API.
- We wrapped only those OpenCV part, which is marked up for wrapping. Actually the coverage is similar to Python API. We are going to analyze what is also important on Android and to provide it in Java.
We didn't try to run Java wrappers on a desktop, because our target platform is Android. Platform-dependent code is localized, so it will not take much time to call OpenCV from desktop Java. But, we are not sure that this item will have a large priority in OpenCv for Android task list.
2.3
June, 2011
With support from NVidia, OpenCV Android port has been greatly improved. Now it is not a separate branch of OpenCV, it shares the same code tree with additional build scripts. Few demos were developed. Camera support has been added as well.
2.2
2010
OpenCV can now be built for Android (GSoC 2010 project), thanks to Ethan Rublee! There are some samples too, see Android2.2.