From e9e46d3086025542ee69e84f37310e7a71cd2cdb Mon Sep 17 00:00:00 2001 From: Vsevolod Glumov Date: Thu, 20 Dec 2012 18:05:56 +0400 Subject: [PATCH 01/12] Updated Android introductory tutorials, based on frequent Q&A questions/issues. --- .../android_binary_package/O4A_SDK.rst | 56 ++++++++++++++++--- .../android_dev_intro.rst | 25 +++++++-- 2 files changed, 66 insertions(+), 15 deletions(-) diff --git a/doc/tutorials/introduction/android_binary_package/O4A_SDK.rst b/doc/tutorials/introduction/android_binary_package/O4A_SDK.rst index b426c5c1ec..66b7842c9c 100644 --- a/doc/tutorials/introduction/android_binary_package/O4A_SDK.rst +++ b/doc/tutorials/introduction/android_binary_package/O4A_SDK.rst @@ -159,7 +159,7 @@ Get the OpenCV4Android SDK unzip ~/Downloads/OpenCV-2.4.3-android-sdk.zip -.. |opencv_android_bin_pack| replace:: OpenCV-2.4.3-android-sdk.zip +.. |opencv_android_bin_pack| replace:: OpenCV-2.4.3.1-android-sdk.zip .. _opencv_android_bin_pack_url: http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.4.3/OpenCV-2.4.3-android-sdk.zip/download .. |opencv_android_bin_pack_url| replace:: |opencv_android_bin_pack| .. |seven_zip| replace:: 7-Zip @@ -186,6 +186,8 @@ Import OpenCV library and samples to the Eclipse Each sample included into the |opencv_android_bin_pack| is a regular Android project that already references OpenCV library.Follow the steps below to import OpenCV and samples into the workspace: + .. note:: OpenCV samples are indeed **dependent** on OpenCV library and wouldn't work without it. + * Right click on the :guilabel:`Package Explorer` window and choose :guilabel:`Import...` option from the context menu: @@ -213,7 +215,7 @@ Import OpenCV library and samples to the Eclipse and you have to wait some time while it is building OpenCV samples. Just give a minute to Eclipse to complete initialization. - .. note :: After the initial import, on a non-Windows (Linux and Mac OS) operating system Eclipse + .. warning :: After the initial import, on a non-Windows (Linux and Mac OS) operating system Eclipse will still show build errors for applications with native C++ code. To resolve the issues, please do the following: @@ -235,14 +237,14 @@ Import OpenCV library and samples to the Eclipse Running OpenCV Samples ---------------------- -At this point you should be able to build and run the samples. Keep in mind, that ``face-detection``, -``Tutorial 3`` and ``Tutorial 4`` include some native code and require Android NDK and CDT plugin -for Eclipse to build working applications. If you haven't installed these tools see the corresponding -section of :ref:`Android_Dev_Intro`. +At this point you should be able to build and run the samples. Keep in mind, that +``face-detection``, ``Tutorial 3`, ``Tutorial 4`` and ``Tutorial 5`` include some native code and +require Android NDK and CDT plugin for Eclipse to build working applications. If you haven't +installed these tools, see the corresponding section of :ref:`Android_Dev_Intro`. -Also, please consider that ``Tutorial 0`` and ``Tutorial 1`` samples use Java Camera API that -definitelly accessible on emulator from the Android SDK. -Other samples use OpenCV Native Camera which may not work with emulator. +.. warning:: Please consider that ``Tutorial 1`` samples use Java Camera API, which is accessible + with an AVD. Other samples use OpenCV Native Camera which **may not work** with + an emulator. .. note:: Recent *Android SDK tools, revision 19+* can run ARM v7a OS images but they available not for all Android versions. @@ -282,6 +284,41 @@ Well, running samples from Eclipse is very simple: If you have no access to the *Market*, which is often the case with emulators - you will need to install the packages from OpenCV4Android SDK folder manually. See :ref:`manager_selection` for details. + .. code-block:: sh + :linenos: + + /platform-tools/adb install /apk/OpenCV_2.4.3_Manager_armv7a-neon.apk + /platform-tools/adb install /apk/OpenCV_2.4.3_binary_pack_armv7a.apk + + .. note:: ``armeabi``, ``armv7a-neon``, ``arm7a-neon-android8``, ``mips`` and ``x86`` stand for + platform targets: + + * ``armeabi`` is for ARM v5 and ARM v6 architectures, + + * ``armv7a-neon`` is for NEON-optimized ARM v7, + + * ``arm7a-neon-android8`` is for NEON-optimized ARM v7 with Android API 8, + + * ``mips`` is for MIPS architecture, + + * ``x86`` is for Intel x86 CPUs. + + If using hardware device for testing/debugging, run the following command to learn + its CPU architecture: + + .. code-block:: sh + + adb shell getprop ro.product.cpu.abi + + If you're using an AVD emulator, go :menuselection:`Window > AVD Manager` to see the + list of availible devices. Click :menuselection:`Edit` in the context menu of the + selected device. In the window, which then pop-ups, find the CPU field. + + You may also see section :ref:`manager_selection` for details. + + + When done, you will be able to run OpenCV samples on your device/emulator seamlessly. + * Here is ``Tutorial 2 - Use OpenCV Camera`` sample, running on top of stock camera-preview of the emulator. .. image:: images/emulator_canny.png @@ -289,6 +326,7 @@ Well, running samples from Eclipse is very simple: :alt: Tutorial 1 Basic - 1. Add OpenCV - running Canny :align: center + What's next =========== diff --git a/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst b/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst index 8855c5bd90..db02fca857 100644 --- a/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst +++ b/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst @@ -78,7 +78,7 @@ Development in Java You need the following software to be installed in order to develop for Android in Java: -#. **Sun JDK 6** +#. **Sun JDK 7** Visit `Java SE Downloads page `_ and download an installer for your OS. @@ -93,7 +93,7 @@ You need the following software to be installed in order to develop for Android .. code-block:: bash - sudo update-java-alternatives --set java-6-sun + sudo update-java-alternatives --set java-7-sun .. TODO: Add a note on Sun/Oracle Java installation on Ubuntu 12. @@ -348,6 +348,11 @@ Building application native part from command line Here is the standard way to compile C++ part of an Android application: +.. warning:: We strongly reccomend using ``cmd.exe`` (standard windows console) instead of Cygwin on + Windows. Use the latter if only you're absolutely sure about, what you're doing. Cygwin + is not really supported and we are unlikely to help you in case you encounter some + problems with it. So, use it only if you're capable of handling the consequences yourself. + #. Open console and go to the root folder of an Android application .. code-block:: bash @@ -361,7 +366,7 @@ Here is the standard way to compile C++ part of an Android application: /ndk-build .. note:: On Windows we recommend to use ``ndk-build.cmd`` in standard Windows console (``cmd.exe``) - rather than the similar ``bash`` script in ``Cygwin`` shell. + rather than the similar ``bash`` script in ``Cygwin`` shell. .. image:: images/ndk_build.png :alt: NDK build @@ -401,7 +406,15 @@ Eclipse build process. We recommend the approach based on Eclipse (e.g. ``"X:\\Apps\\android-ndk-r8"`` or ``"/opt/android-ndk-r8"``). **On Windows** an environment variable can be set via - :guilabel:`My Computer -> Properties -> Advanced -> Environment variables` and restarting Eclipse. + :guilabel:`My Computer -> Properties -> Advanced -> Environment variables` or in Eclipse itself + :guilabel:`Window -> Preferences -> C/C++ -> Build -> Env`. Restart Eclipse after setting the + variables. + + .. note:: If you're using Eclipse 3 and lower, keep in mind, that it doesn't change variables on + restart as Eclipse 4 does. You may need to clean :file:`org.eclipse.cdt.core.prefs`, + which is located in the following path inside Eclipse workspace: + ``\.metadata\.plugins\org.eclipse.core.runtime\.settings\``. + On Windows 7 it's also possible to use `setx `_ command in a console session. **On Linux** and **MacOS** an environment variable can be set via appending a @@ -666,8 +679,8 @@ execute :command:`adb devices` command. You will see the list of attached device :alt: List of attached devices :align: center -MacOS host computer -^^^^^^^^^^^^^^^^^^^ +Mac OS host computer +^^^^^^^^^^^^^^^^^^^^ No actions are required, just connect your device via USB and run ``adb devices`` to check connection. What's next From e1331b44f56bf8db583c4cdf426021cdb1e3b7df Mon Sep 17 00:00:00 2001 From: Anna Kogan Date: Mon, 24 Dec 2012 15:29:49 +0400 Subject: [PATCH 02/12] Wrote script generating timing table --- modules/ts/misc/perf_tests_timing.py | 108 +++++++++++++++++++++++++++ modules/ts/misc/testlog_parser.py | 3 + 2 files changed, 111 insertions(+) create mode 100644 modules/ts/misc/perf_tests_timing.py diff --git a/modules/ts/misc/perf_tests_timing.py b/modules/ts/misc/perf_tests_timing.py new file mode 100644 index 0000000000..d3e2c571e7 --- /dev/null +++ b/modules/ts/misc/perf_tests_timing.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python + +import testlog_parser, sys, os, xml, glob, re +from table_formatter import * +from optparse import OptionParser +from operator import itemgetter, attrgetter +from summary import getSetName, alphanum_keyselector + +if __name__ == "__main__": + usage = "%prog .xml" + parser = OptionParser(usage = usage) + + for arg in sys.argv: + print arg + + parser.add_option("-o", "--output", dest="format", + help="output results in text format (can be 'txt', 'html' or 'auto' - default)", + metavar="FMT", default="auto") + + (options, args) = parser.parse_args() + + options.generateHtml = detectHtmlOutputType(options.format) + + if 1 != len(args): + parser.print_help() + exit(0) + + # expand wildcards and filter duplicates + file = os.path.abspath(args[0]) + if not os.path.isfile(file): + print 'Incorrect file name!' + parser.print_help() + exit(0) + + # read all passed files + test_sets = [] + try: + tests = testlog_parser.parseLogFile(file) + if tests: + test_sets.append((os.path.basename(file), tests)) + except IOError as err: + sys.stderr.write("IOError reading \"" + file + "\" - " + str(err) + os.linesep) + except xml.parsers.expat.ExpatError as err: + sys.stderr.write("ExpatError reading \"" + file + "\" - " + str(err) + os.linesep) + + if not test_sets: + sys.stderr.write("Error: no test data found" + os.linesep) + quit() + + # find matches + setsCount = len(test_sets) + test_cases = {} + + name_extractor = lambda name: str(name) + + for i in range(setsCount): + for case in test_sets[i][1]: + name = name_extractor(case) + if name not in test_cases: + test_cases[name] = [None] * setsCount + test_cases[name][i] = case + + testsuits = [] # testsuit name, time, flag for failed tests + + prevGroupName = None + suit_time = 0 + has_failed = False + for name in sorted(test_cases.iterkeys(), key=alphanum_keyselector): + cases = test_cases[name] + + groupName = next(c for c in cases if c).shortName() + if groupName != prevGroupName: + if prevGroupName != None: + testsuits.append((prevGroupName, suit_time, has_failed)) + has_failed = False + suit_time = 0 + prevGroupName = groupName + + for i in range(setsCount): + case = cases[i] + if not case is None: + if case.get("status") == "run": + suit_time += case.get("time") + if case.get("status") == "failed": + has_failed = True + + tbl = table() + + # header + tbl.newColumn("name", "Name", align = "left", cssclass = "col_name") + tbl.newColumn("time", "Time (ms)", align = "left", cssclass = "col_name") + tbl.newColumn("failed", "Failed tests", align = "center", cssclass = "col_name") + + # rows + for suit in sorted(testsuits, key=lambda suit: suit[1], reverse=True): + tbl.newRow() + tbl.newCell("name", suit[0]) + tbl.newCell("time", formatValue(suit[1], "", ""), suit[1]) + if (suit[2]): + tbl.newCell("failed", "Yes") + + # output table + if options.generateHtml: + htmlPrintHeader(sys.stdout, "Timings of %s tests from %s test logs" % (len(test_cases), setsCount)) + tbl.htmlPrintTable(sys.stdout) + htmlPrintFooter(sys.stdout) + else: + tbl.consolePrintTable(sys.stdout) \ No newline at end of file diff --git a/modules/ts/misc/testlog_parser.py b/modules/ts/misc/testlog_parser.py index ce55b8b1de..f61b47bba9 100755 --- a/modules/ts/misc/testlog_parser.py +++ b/modules/ts/misc/testlog_parser.py @@ -30,6 +30,7 @@ class TestInfo(object): self.parseLongMetric(xmlnode, "mean"); self.parseLongMetric(xmlnode, "stddev"); self.parseFloatMetric(xmlnode, "gstddev"); + self.parseFloatMetric(xmlnode, "time"); def parseLongMetric(self, xmlnode, name, default = 0): if xmlnode.hasAttribute(name): @@ -78,6 +79,8 @@ class TestInfo(object): val = self.metrix.get(name, None) if not val: return val + if name == "time": + return self.metrix.get("time") if name in ["gmean", "min", "mean", "median", "stddev"]: scale = 1.0 frequency = self.metrix.get("frequency", 1.0) or 1.0 From f57d692cd785672221111bb50c1d2360ce929581 Mon Sep 17 00:00:00 2001 From: Anna Kogan Date: Mon, 24 Dec 2012 16:47:30 +0400 Subject: [PATCH 03/12] Improved code --- modules/ts/misc/perf_tests_timing.py | 46 +++++++++++++--------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/modules/ts/misc/perf_tests_timing.py b/modules/ts/misc/perf_tests_timing.py index d3e2c571e7..70d2aa2f03 100644 --- a/modules/ts/misc/perf_tests_timing.py +++ b/modules/ts/misc/perf_tests_timing.py @@ -7,28 +7,24 @@ from operator import itemgetter, attrgetter from summary import getSetName, alphanum_keyselector if __name__ == "__main__": - usage = "%prog .xml" + usage = "%prog .xml [...]" parser = OptionParser(usage = usage) - for arg in sys.argv: - print arg - - parser.add_option("-o", "--output", dest="format", - help="output results in text format (can be 'txt', 'html' or 'auto' - default)", - metavar="FMT", default="auto") + parser.add_option("-o", "--output", dest = "format", + help = "output results in text format (can be 'txt', 'html' or 'auto' - default)", + metavar = 'FMT', default = 'auto') (options, args) = parser.parse_args() - - options.generateHtml = detectHtmlOutputType(options.format) - if 1 != len(args): parser.print_help() exit(0) + options.generateHtml = detectHtmlOutputType(options.format) + # expand wildcards and filter duplicates file = os.path.abspath(args[0]) if not os.path.isfile(file): - print 'Incorrect file name!' + sys.stderr.write("IOError reading \"" + file + "\" - " + str(err) + os.linesep) parser.print_help() exit(0) @@ -71,7 +67,8 @@ if __name__ == "__main__": groupName = next(c for c in cases if c).shortName() if groupName != prevGroupName: if prevGroupName != None: - testsuits.append((prevGroupName, suit_time, has_failed)) + testsuits.append({'name': prevGroupName, 'time': suit_time, \ + 'failed': has_failed}) has_failed = False suit_time = 0 prevGroupName = groupName @@ -79,29 +76,30 @@ if __name__ == "__main__": for i in range(setsCount): case = cases[i] if not case is None: - if case.get("status") == "run": - suit_time += case.get("time") - if case.get("status") == "failed": + if case.get('status') == 'run': + suit_time += case.get('time') + if case.get('status') == 'failed': has_failed = True tbl = table() # header - tbl.newColumn("name", "Name", align = "left", cssclass = "col_name") - tbl.newColumn("time", "Time (ms)", align = "left", cssclass = "col_name") - tbl.newColumn("failed", "Failed tests", align = "center", cssclass = "col_name") + tbl.newColumn('name', 'Name of testsuit', align = 'left', cssclass = 'col_name') + tbl.newColumn('time', 'Time (ms)', align = 'left', cssclass = 'col_name') + tbl.newColumn('failed', 'Failed tests', align = 'center', cssclass = 'col_name') # rows - for suit in sorted(testsuits, key=lambda suit: suit[1], reverse=True): + for suit in sorted(testsuits, key = lambda suit: suit['time'], reverse = True): tbl.newRow() - tbl.newCell("name", suit[0]) - tbl.newCell("time", formatValue(suit[1], "", ""), suit[1]) - if (suit[2]): - tbl.newCell("failed", "Yes") + tbl.newCell('name', suit['name']) + tbl.newCell('time', formatValue(suit['time'], '', ''), suit['time']) + if (suit['failed']): + tbl.newCell('failed', 'Yes') + else: + tbl.newCell('failed', ' ') # output table if options.generateHtml: - htmlPrintHeader(sys.stdout, "Timings of %s tests from %s test logs" % (len(test_cases), setsCount)) tbl.htmlPrintTable(sys.stdout) htmlPrintFooter(sys.stdout) else: From 9ca65ceef8af35efe0d5995f53aac44dc26df839 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Mon, 24 Dec 2012 17:49:49 +0400 Subject: [PATCH 04/12] OpenCV example-tutorial1 does not work on Android emulator (Bug #2656) Problems with Android 2.3.3 (API level 10) fixed; Android 2.2 does not work due to unsupported camera frame format (known android-2.2 emulator issue). --- modules/java/generator/src/java/android+JavaCameraView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/java/generator/src/java/android+JavaCameraView.java b/modules/java/generator/src/java/android+JavaCameraView.java index ce50d66a96..c3d8f564e1 100644 --- a/modules/java/generator/src/java/android+JavaCameraView.java +++ b/modules/java/generator/src/java/android+JavaCameraView.java @@ -124,7 +124,7 @@ public class JavaCameraView extends CameraBridgeViewBase implements PreviewCallb params.setPreviewSize((int)frameSize.width, (int)frameSize.height); List FocusModes = params.getSupportedFocusModes(); - if (FocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) + if (FocusModes != null && FocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) { params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); } From 064bf167ad0cd4cc658383aaae9d57fd977076db Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Mon, 24 Dec 2012 18:05:48 +0400 Subject: [PATCH 05/12] OpenCV Manager crashes with exception (Bug #2660) String checking and range cheching added. --- .../org/opencv/engine/manager/ManagerActivity.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java b/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java index 7c4b8e4c7e..6f604fb875 100644 --- a/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java +++ b/android/service/engine/src/org/opencv/engine/manager/ManagerActivity.java @@ -402,10 +402,16 @@ public class ManagerActivity extends Activity protected String NormalizeVersion(String OpenCVersion, String PackageVersion) { + if (OpenCVersion == null || PackageVersion == null) + return "unknown"; + int dot = PackageVersion.indexOf("."); - return OpenCVersion.substring(0, OpenCVersion.length()-1) + "." + - OpenCVersion.toCharArray()[OpenCVersion.length()-1] + "." + - PackageVersion.substring(0, dot) + " rev " + PackageVersion.substring(dot+1); + if (dot == -1 || OpenCVersion.length() == 0) + return "unknown"; + else + return OpenCVersion.substring(0, OpenCVersion.length()-1) + "." + + OpenCVersion.toCharArray()[OpenCVersion.length()-1] + "." + + PackageVersion.substring(0, dot) + " rev " + PackageVersion.substring(dot+1); } protected String ConvertPackageName(String Name, String Version) From 7e52a8d1b6822150c9815dcfd26e05d8608f5251 Mon Sep 17 00:00:00 2001 From: Alexander Shishkov Date: Mon, 24 Dec 2012 18:26:02 +0400 Subject: [PATCH 06/12] modify default css for search button (error #2654) --- doc/_themes/blue/static/default.css_t | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/_themes/blue/static/default.css_t b/doc/_themes/blue/static/default.css_t index 492b46ea41..e2127db1da 100644 --- a/doc/_themes/blue/static/default.css_t +++ b/doc/_themes/blue/static/default.css_t @@ -394,4 +394,12 @@ div.body ul.search li { div.linenodiv { min-width: 1em; text-align: right; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width:auto; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width:auto; } \ No newline at end of file From 99299b3605b6430c2c63ffd5ec79ba9f3af6ffa3 Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Mon, 24 Dec 2012 19:25:42 +0400 Subject: [PATCH 07/12] updating tutorial #1 --- .../android_dev_intro.rst | 97 ++++++------------ .../images/eclipse_about_cdt_0.png | Bin 51385 -> 0 bytes .../images/eclipse_about_cdt_1.png | Bin 51500 -> 0 bytes .../images/eclipse_about_cdt_2.png | Bin 56156 -> 0 bytes 4 files changed, 31 insertions(+), 66 deletions(-) delete mode 100644 doc/tutorials/introduction/android_binary_package/images/eclipse_about_cdt_0.png delete mode 100644 doc/tutorials/introduction/android_binary_package/images/eclipse_about_cdt_1.png delete mode 100644 doc/tutorials/introduction/android_binary_package/images/eclipse_about_cdt_2.png diff --git a/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst b/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst index db02fca857..a735bc8a7b 100644 --- a/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst +++ b/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst @@ -78,7 +78,7 @@ Development in Java You need the following software to be installed in order to develop for Android in Java: -#. **Sun JDK 7** +#. **Sun JDK 6** (Sun JDK 7 is also possible) Visit `Java SE Downloads page `_ and download an installer for your OS. @@ -93,7 +93,7 @@ You need the following software to be installed in order to develop for Android .. code-block:: bash - sudo update-java-alternatives --set java-7-sun + sudo update-java-alternatives --set java-6-sun .. TODO: Add a note on Sun/Oracle Java installation on Ubuntu 12. @@ -103,9 +103,10 @@ You need the following software to be installed in order to develop for Android Here is Google's `install guide `_ for the SDK. - .. note:: If you choose SDK packed into a Windows installer, then you should have 32-bit JRE - installed. It is not a prerequisite for Android development, but installer is a x86 - application and requires 32-bit Java runtime. + .. note:: You can choose downloading ``ADT Bundle package`` that in addition to Android SDK Tools includes + Eclipse + ADT + CDT plugins, Android Platform-tools, the latest Android platform and the latest + Android system image for the emulator - this is the best choice for those who is setting up Android + development environment the first time! .. note:: If you are running x64 version of Ubuntu Linux, then you need ia32 shared libraries for use on amd64 and ia64 systems to be installed. You can install them with the @@ -215,45 +216,11 @@ You need the following software to be installed in order to develop for Android #. **CDT plugin for Eclipse** + If you selected for installation the ``NDK plugins`` component of Eclipse ADT plugin (see the picture above) your Eclipse IDE + should already have ``CDT plugin`` (that means ``C/C++ Development Tooling``). There are several possible ways to integrate compilation of C++ code by Android NDK into Eclipse compilation process. We recommend the approach based on Eclipse :abbr:`CDT(C/C++ Development Tooling)` Builder. - Make sure your Eclipse IDE has the :abbr:`CDT(C/C++ Development Tooling)` plugin - installed. Menu :guilabel:`Help -> About Eclipse SDK -> Installation Details`. - - .. image:: images/eclipse_about_cdt_0.png - :alt: CDT in Eclipse About - :align: center - - .. - - .. image:: images/eclipse_about_cdt_1.png - :alt: CDT in Eclipse About - :align: center - - .. note:: If you're using the latest ADT plugin for Eclipse (version 20 and above), most likely - you already have the CDT plugin and don't need to install it. - - .. image:: images/eclipse_about_cdt_1.png - :alt: CDT in Eclipse About - :align: center - - To install the `CDT plugin `_ use menu - :guilabel:`Help -> Install New Software...`, then paste the CDT 8.0 repository URL - http://download.eclipse.org/tools/cdt/releases/indigo as shown in the picture below and click - :guilabel:`Add...`, name it *CDT* and click :guilabel:`OK`. - - .. image:: images/eclipse_inst_cdt.png - :alt: Configure builders - :align: center - - ``CDT Main Features`` should be enough: - - .. image:: images/eclipse_inst_cdt_2.png - :alt: Configure builders - :align: center - - That's it. Compilation of C++ code is fully integrated into Eclipse building process now. Android application structure @@ -336,9 +303,9 @@ and exceptions are used in C++, it also should be created. Example of the file : APP_CPPFLAGS := -frtti -fexceptions APP_ABI := all -.. note:: We recommend setting ``APP_ABI := all`` for all targets. If you want to specify the - target explicitly, use ``armeabi`` for ARMv5/ARMv6, ``armeabi-v7a`` for ARMv7, ``x86`` - for Intel Atom or ``mips`` for MIPS. +.. note:: We recommend setting ``APP_ABI := all`` for all targets. If you want to specify the + target explicitly, use ``armeabi`` for ARMv5/ARMv6, ``armeabi-v7a`` for ARMv7, ``x86`` + for Intel Atom or ``mips`` for MIPS. .. _NDK_build_cli: @@ -348,9 +315,9 @@ Building application native part from command line Here is the standard way to compile C++ part of an Android application: -.. warning:: We strongly reccomend using ``cmd.exe`` (standard windows console) instead of Cygwin on - Windows. Use the latter if only you're absolutely sure about, what you're doing. Cygwin - is not really supported and we are unlikely to help you in case you encounter some +.. warning:: We strongly reccomend using ``cmd.exe`` (standard Windows console) instead of Cygwin on + **Windows**. Use the latter if only you're absolutely sure about, what you're doing. Cygwin + is not really supported and we are unlikely to help you in case you encounter some problems with it. So, use it only if you're capable of handling the consequences yourself. #. Open console and go to the root folder of an Android application @@ -406,20 +373,19 @@ Eclipse build process. We recommend the approach based on Eclipse (e.g. ``"X:\\Apps\\android-ndk-r8"`` or ``"/opt/android-ndk-r8"``). **On Windows** an environment variable can be set via - :guilabel:`My Computer -> Properties -> Advanced -> Environment variables` or in Eclipse itself - :guilabel:`Window -> Preferences -> C/C++ -> Build -> Env`. Restart Eclipse after setting the - variables. - - .. note:: If you're using Eclipse 3 and lower, keep in mind, that it doesn't change variables on - restart as Eclipse 4 does. You may need to clean :file:`org.eclipse.cdt.core.prefs`, - which is located in the following path inside Eclipse workspace: - ``\.metadata\.plugins\org.eclipse.core.runtime\.settings\``. - + :guilabel:`My Computer -> Properties -> Advanced -> Environment variables`. On Windows 7 it's also possible to use `setx `_ command in a console session. **On Linux** and **MacOS** an environment variable can be set via appending a ``"export VAR_NAME=VAR_VALUE"`` line to the :file:`"~/.bashrc"` file and logging off and then on. + .. note:: It's also possible to define the ``NDKROOT`` environment variable within Eclipse IDE, + but it should be done for every new workspace you create. If you prefer this option better than setting system + environment variable, open Eclipse menu :guilabel:`Window -> Preferences -> C/C++ -> Build -> Environment`, + press the :guilabel:`Add...` button and set variable name to ``NDKROOT`` and value to local Android NDK path. + +#. After that you need to **restart Eclipse** to apply the changes. + #. Open Eclipse and load the Android app project to configure. #. Add C/C++ Nature to the project via Eclipse menu :guilabel:`New -> Other -> C/C++ -> Convert to a C/C++ Project`. @@ -476,11 +442,20 @@ Eclipse build process. We recommend the approach based on Eclipse :: + # for NDK r8 and prior: ${NDKROOT}/platforms/android-9/arch-arm/usr/include ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include ${ProjDirPath}/../../sdk/native/jni/include + :: + + # for NDK r8b and later: + ${NDKROOT}/platforms/android-9/arch-arm/usr/include + ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include + ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include + ${ProjDirPath}/../../sdk/native/jni/include + The last path should be changed to the correct absolute or relative path to OpenCV4Android SDK location. This should clear the syntax error notifications in Eclipse C++ editor. @@ -489,16 +464,6 @@ Eclipse build process. We recommend the approach based on Eclipse :alt: Configure CDT :align: center - .. note:: The latest Android NDK **r8b** uses different STL headers path. So if you use this NDK - release add the following **Include** paths list instead: - - :: - - ${NDKROOT}/platforms/android-9/arch-arm/usr/include - ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include - ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include - ${ProjDirPath}/../../sdk/native/jni/include - Debugging and Testing ===================== diff --git a/doc/tutorials/introduction/android_binary_package/images/eclipse_about_cdt_0.png b/doc/tutorials/introduction/android_binary_package/images/eclipse_about_cdt_0.png deleted file mode 100644 index 79e43690bf3fb1d1db65aa6463f0f0c062b48650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51385 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 z zuSWR0cucyUumMGM!NZ6QU9&IB#x{6l0Z-69>@=?8b*5s;F}sY^>)yM-rYKdUoRInQ z9m5bt>M2(_3LuHSM^sx&#upwNBD{{ccRgjHHhXu`3;`xDjq3 zvjMuzSree=SG#z;iEGah=Irwwk!Q>eCRQqF%^h-HT=ek8ac=bhu+MifJH1o;)y&tP zKM&^%@pZ3eQNVU?otfD~L^i2>0*#&s^M=+EglqbJB2pEqlnFZ~4?mi6usTGiIZ!^) z?5#6QD+zCVC{Ue&s0=)sAFEym+k|}=Q|Rl+?gUi|bIz81{pH0Jew4t-M`UHjTkjlP z@wiOqvMjS)6LEo}_f zyt6`COp zU3b3R80d1!(~5y#I}v`IGDrHSAY9nfw*{#k&n<fal_qwlJrACLU!C%hpNhd*a7i0j98RFuiin#Nk$(!;&rE~(ZkjcD zi5os~Gif(eBSN6e=-lS`bCsL*F511W->Sj}ZX^Df>Q|T<35=zcUcQt6Gwy(L|Ggoi zDt?pRdlbK~jIi{S(y?wphaOmryCtDsZwqA@8h&MxIqKbHCh*%I<{hPT=^5^tTn-VF zKWv+7>zCc1K*%3=17=o@?lR5ReNUEws#%j+rt*6g77;$^Jp;(&Y7ch2*e81eZXHO6 zkK8k6z3(D^#CRGiYL*!ZX#`0Z)viC&%@Fg2?>{AZ4W943S!>i40tt`r8`PE5<(aH{d=O2qr>V% ziy$^|8w%3T|Cw|&v&ruoHXb5mXKposttMy&zV22Utg zZ3%F6eeswvRNuz_;_=D9BSU;li!V{~An0~ohY%@-Ac*V9Y2)O7RY894^-yLyKV zV^WLZOW3jbyM(=%%X+y;ycmE=&pSh?;fDK7!-l=Bp7+{fH=$498;lm*53G;*nvGTF z5^U-KiLmCbg9b@>hXu^2L};N#+Mx%b9aeHqIpZ4-XiQCH)9gQX{+Zg9?4+ukOGX{f zD`uUOVcv*R{Rb%_@v>s}9gJJblbEgCwsW$x_h66f17{$6xmagw$er)xx$eYAFK1m( z2z*=PkF`38DMiCF4>syfwd&}941#h^@R#U0TAb`fnhpw9gmM2J^y>8Y>ph$GDqKdFb7rRIm7efGj=_5C+$j&LO)k^0El&Zu{`#2_VH{_F?5}V z+L&zNZ5(Z#otU7Pdy%l>mxcuXYlNpKupp_ukn}!RQrM|i?hM&kNbn33= zm+`SzM;ChV@%ksBt2vp`BUP}0>>TtJB><$>oXZOfZ(&;d_WG+*H`=6@P(1-t9-wPjh!>2kzxFvQs;{Pw!Y0%dt%%Dp*kh{&DoVhAIO`~Z2dmF!R{z6L_~&R(1h9K4=AV83 zUm4ZmADOkEWOjc*b|+@iaetUi{~UICz-3Lzex?5h z-3!1*{rmL)e|P-9x}zB#TC&`X=&Pu*MBr`zcAT4156fOQuZ^yBtfeX= zuPp43EY7VjKq9XoT~9d)Z0`zFqZ%{I*0VDy++i^O?$LQf5;w`K2DLc_>>8#A~HSgzsm z+yDcqF&POd0hiDHEl>uJyvJ>`yHj|oygoQ03xdj|RW*CBo{RR&gC4G~_9yA&(^B{$ zr2aU~X&{KtHQf45{_Z#%c;PtX$7+4}{05b)(9KXMIqQG#Jm5g7(969ZK+op;{RcOR z4+@}e?PApuiFu+@?*N(n&gd&OmN}`H?fU@?T~28*^DbLo*8&_we-=?(?0DrYv^47b z&$@OG+sAaQIsfU8fCDXeGb2*Ks!5@q`E)3_2PbCf2>kPdhm!$}#XMHQfbxVdMSR)H z9wo_&`irWimvpxfWFSZJL!HexZ`X%#sRd)b4wkCj6|3o-dM_~WsIrCwf+LfhNxkl4*Dq)9@A3u;rM1>37aG zTe#zmhJBsWahIfZpL5eBr>G%4@c(V()l(%YM|JH2NTPn6g3AfC5%F%WBE9@Ds-q2A zk%yvsBGl<7VUwlW3ZEp-15oe)m_W58+⪚ZjUEV2eJM$B$wQFsac#>zw*tyDr?&m zjIrW0Mix#{@d!gbfShFZ=VpqXfiR|_MoC2g5%JiEhK-KNcX&}`^+>Y%&WxyCEgKz^1gs{GOE z^Hb#HdC+F({a1{hC4tm{-n~P86UpMc147aWhw~p1p&zx~Uqhl`p+|q`q7VP+Wx2N5 z$Mrj}Bniyjs^bu=gJ|2^$HlzY`xEs)dI-PCKofNOUd!_wa}>!f>iaG6mMC!xd82+dTzteHWUqcUGm{&{E{IQoNZv>UM z(0yo%l!tY^$m<-exUBCmDDa!z&-k&<#QeVC*qtl0LcY}9Wg$EERgx??YMdtWH+pVI zEqHUg_m|wFRkM*QXbLU&3)BtPKajm*gOkB29-s8frflTF@op+TQ;^bS`=E`q$zbssIi9``9~9M6Z*m8Z=ZKeshKUv%u;KxZm*ulpDSE}cC#1s0ex`Vg_O$P|&mV{W z+-Fz5Xr1;(kUnDKf_grqg6#4N;fiK_Y5r=^;`3fypF)6Yem2J^>so`7FPY&oyOrF( z7Obq+eRKj^84SOG7fPmBwKx#?|BuO^BGm@Qu2-}TvJ+X1AiWliN%)$7*4Fx2pqd5M z9&L<5OF!Z13yqM>+;4_-NiI~=wetNHIRu9N`=c!|lui5yIuBU0KjSL3J3nkHyM>tg zLuE;$ydPAs2d9gNvDQez&nf^HE0Fpqb+MDqb^P^IIleFZRL1mv!H@MRk?CEAWBr<% z=QG^HS;CER<NHW;Fwv<~Kab5i z1%>Y)kj_&#z^#=ZJ8K&oDyV-DIorayaHRS__^=7tg=O>HkO&-)E+a&-AS2q9e)oEt zrcA^)+57k=rQdFbH|bQyV!N~*8Rcjsp5u~avPwvnv=)>>UM_vUYnrHRA-=0%F50c_ zA`Ig&!099|n;a^YbBz)Wmw&O6Tu5f9bH<_fBhPvIC51_81;Q%Y}%a7H>bO5Dy z&1ZouT0?s@c`70;6y}p9L%g>m3iGvyHyOWggEJB+5qC#K0B+Zn^2$x(o$$umpz90P zz7((e!+Y<4jI;l5K)0IZ>emI?GN21jyPpa%=7X+D{3Xp^LbS!)yW}Y&-;o9sereUa zZNtMg=X%w)nr^6kg$uuh4#sw|N~XG%ZypK%^HcCYtgua#5ll!qGr+`_Ip3#3KE5FB z$LpnT0haSl2^1lvQ5}h1HVyaf`6|=?g-Ww&)h!(9a70)-8mO^N_};{c)^oR&osSejcz8Nv__3(YG;A-sk1`vK%9Vp0f2zzCe-F%Ldl@quYV6HY+xV z8<=37XYW@czckSFh~tQAD3g?9gyyX-@C4r20c(n2-fg;^Exgjph88 zVN@pb4;iot(=PneFaN#nY}nOF_6JK(K`vkM*Q`3tA^OF^tLwxp)KdLwhvIp=n>{mi z)NPzYX~C-$9&i79DXmozVQOV}D6cr`$B!T1zI_|ds=FiY*&IM#@AUzt$Zi{&+vgDl zt?p_v?lg>;p=d(Uq5SU~X!ayFvIaOZ!qFvukoct^oIP!+`r~J;ZQytdHf(J43>p0E z;p+SeC1zC^82=+^?3NEW0T*(sKJMrLIphC(pRb{Vf0c=lf*jd#fByB~cmiPQkpH8L zT(NV;%yN_7JbW*UOMTxJciXWNgZSXF6GZT@KVOK_^pB)77IbSM+7w5-u`MlN2|d>MA+l1|K2*{Z2r{? zVyZ8c{~?9{Lt5^Zf%5Vh1&Zwb{k@leK)@dW_PS)c918=6e{9+G|dnkNIGkpTef^8##2fh#1c`R42Z U|7%?RC&1qqak;;tpY;6y5B-72-v9sr diff --git a/doc/tutorials/introduction/android_binary_package/images/eclipse_about_cdt_1.png b/doc/tutorials/introduction/android_binary_package/images/eclipse_about_cdt_1.png deleted file mode 100644 index 9b2c9b136ca2b859001e54021ab0be9a42a265e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51500 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 JS?83{1OSuNnI`}M From 1e5b533d017bc2549febc5338a049499112f182f Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Mon, 24 Dec 2012 20:05:27 +0400 Subject: [PATCH 08/12] updating tutorial #2 --- .../android_binary_package/O4A_SDK.rst | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/doc/tutorials/introduction/android_binary_package/O4A_SDK.rst b/doc/tutorials/introduction/android_binary_package/O4A_SDK.rst index 66b7842c9c..7aed351213 100644 --- a/doc/tutorials/introduction/android_binary_package/O4A_SDK.rst +++ b/doc/tutorials/introduction/android_binary_package/O4A_SDK.rst @@ -159,8 +159,8 @@ Get the OpenCV4Android SDK unzip ~/Downloads/OpenCV-2.4.3-android-sdk.zip -.. |opencv_android_bin_pack| replace:: OpenCV-2.4.3.1-android-sdk.zip -.. _opencv_android_bin_pack_url: http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.4.3/OpenCV-2.4.3-android-sdk.zip/download +.. |opencv_android_bin_pack| replace:: OpenCV-2.4.3.2-android-sdk.zip +.. _opencv_android_bin_pack_url: http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.4.3/OpenCV-2.4.3.2-android-sdk.zip/download .. |opencv_android_bin_pack_url| replace:: |opencv_android_bin_pack| .. |seven_zip| replace:: 7-Zip .. _seven_zip: http://www.7-zip.org/ @@ -186,7 +186,7 @@ Import OpenCV library and samples to the Eclipse Each sample included into the |opencv_android_bin_pack| is a regular Android project that already references OpenCV library.Follow the steps below to import OpenCV and samples into the workspace: - .. note:: OpenCV samples are indeed **dependent** on OpenCV library and wouldn't work without it. + .. note:: OpenCV samples are indeed **dependent** on OpenCV library project so don't forget to import it to your workspace as well. * Right click on the :guilabel:`Package Explorer` window and choose :guilabel:`Import...` option from the context menu: @@ -222,6 +222,14 @@ Import OpenCV library and samples to the Eclipse Open :guilabel:`Project Properties -> C/C++ Build`, and replace "Build command" text to ``"${NDKROOT}/ndk-build"`` (remove .cmd at the end). + .. note :: In some cases the build errors don't disappear, then try the following actions: + + * right click on ``OpenCV Library`` project -> :guilabel:`Android Tools -> Fix Project Properties`, + then menu :guilabel:`Project -> Clean... -> Clean all` + * right click on the project with errors -> :guilabel:`Properties -> Android`, make sure the + ``Target`` is selected and is ``Android 3.0`` or higher + * check the build errors in the :guilabel:`Problems` view window and try to resolve them by yourselves + .. image:: images/eclipse_cdt_cfg4.png :alt: Configure CDT :align: center @@ -237,14 +245,14 @@ Import OpenCV library and samples to the Eclipse Running OpenCV Samples ---------------------- -At this point you should be able to build and run the samples. Keep in mind, that -``face-detection``, ``Tutorial 3`, ``Tutorial 4`` and ``Tutorial 5`` include some native code and -require Android NDK and CDT plugin for Eclipse to build working applications. If you haven't +At this point you should be able to build and run the samples. Keep in mind, that +``face-detection``, ``Tutorial 3` and ``Tutorial 4`` include some native code and +require Android NDK and CDT plugin for Eclipse to build working applications. If you haven't installed these tools, see the corresponding section of :ref:`Android_Dev_Intro`. -.. warning:: Please consider that ``Tutorial 1`` samples use Java Camera API, which is accessible - with an AVD. Other samples use OpenCV Native Camera which **may not work** with - an emulator. +.. warning:: Please consider that some samples use Android Java Camera API, which is accessible + with an AVD. But most of samples use OpenCV Native Camera which **may not work** with + an emulator. .. note:: Recent *Android SDK tools, revision 19+* can run ARM v7a OS images but they available not for all Android versions. @@ -288,30 +296,29 @@ Well, running samples from Eclipse is very simple: :linenos: /platform-tools/adb install /apk/OpenCV_2.4.3_Manager_armv7a-neon.apk - /platform-tools/adb install /apk/OpenCV_2.4.3_binary_pack_armv7a.apk - .. note:: ``armeabi``, ``armv7a-neon``, ``arm7a-neon-android8``, ``mips`` and ``x86`` stand for - platform targets: + .. note:: ``armeabi``, ``armv7a-neon``, ``arm7a-neon-android8``, ``mips`` and ``x86`` stand for + platform targets: - * ``armeabi`` is for ARM v5 and ARM v6 architectures, + * ``armeabi`` is for ARM v5 and ARM v6 architectures with Android API 8+, - * ``armv7a-neon`` is for NEON-optimized ARM v7, + * ``armv7a-neon`` is for NEON-optimized ARM v7 with Android API 9+, * ``arm7a-neon-android8`` is for NEON-optimized ARM v7 with Android API 8, - * ``mips`` is for MIPS architecture, + * ``mips`` is for MIPS architecture with Android API 9+, - * ``x86`` is for Intel x86 CPUs. + * ``x86`` is for Intel x86 CPUs with Android API 9+. - If using hardware device for testing/debugging, run the following command to learn + If using hardware device for testing/debugging, run the following command to learn its CPU architecture: .. code-block:: sh adb shell getprop ro.product.cpu.abi - If you're using an AVD emulator, go :menuselection:`Window > AVD Manager` to see the - list of availible devices. Click :menuselection:`Edit` in the context menu of the + If you're using an AVD emulator, go :menuselection:`Window > AVD Manager` to see the + list of availible devices. Click :menuselection:`Edit` in the context menu of the selected device. In the window, which then pop-ups, find the CPU field. You may also see section :ref:`manager_selection` for details. From def174513200e97e03ba035945eb08373f9a2a4b Mon Sep 17 00:00:00 2001 From: Kirill Kornyakov Date: Tue, 25 Dec 2012 17:16:30 +0400 Subject: [PATCH 09/12] Updated readme.txt with desciption about different OCV Manager packages --- android/service/doc/UseCases.rst | 33 +------------------- android/service/readme.txt | 53 +++++++++++++++++--------------- 2 files changed, 30 insertions(+), 56 deletions(-) diff --git a/android/service/doc/UseCases.rst b/android/service/doc/UseCases.rst index ff26410e70..59d6215b8e 100644 --- a/android/service/doc/UseCases.rst +++ b/android/service/doc/UseCases.rst @@ -3,38 +3,7 @@ Manager Workflow .. _manager_selection: -OpenCV Manager selection ------------------------- - -Since version 1.7 several packages of OpenCV Manager is built. Every package includes OpenCV library -for package target platform. The internal library is used for most cases, except the rare one, when -arm-v7a without NEON instruction set processor is detected. In this case additional binary package -for arm-v7a is used. The new package selection logic in most cases simplifies OpenCV installation -on end user devices. In most cases OpenCV Manager may be installed automatically from Google Play. -For such case, when Google Play is not available, i.e. emulator, developer board, etc, you can -install it manually using adb tool. - -.. code-block:: sh - :linenos: - - adb install OpenCV-2.4.3-android-sdk/apk/OpenCV_2.4.3_Manager_2.0_.apk - -Use table to determine right OpenCV Manager package: - -+----------------------------+-----------------+-----------------------------------------------------+ -| Hardware Platform | Android version | Package name | -+============================+=================+=====================================================+ -| Intel x86 | >= 2.3 | OpenCV_2.4.3_Manager_2.0_x86.apk | -+----------------------------+-----------------+-----------------------------------------------------+ -| MIPS | >= 2.3 | OpenCV_2.4.3_Manager_2.0_mips.apk | -+----------------------------+-----------------+-----------------------------------------------------+ -| armeabi (arm-v5, arm-v6) | >= 2.3 | OpenCV_2.4.3_Manager_2.0_armeabi.apk | -+----------------------------+-----------------+-----------------------------------------------------+ -| armeabi-v7a (arm-v7a-NEON) | >= 2.3 | OpenCV_2.4.3_Manager_2.0_armv7a-neon.apk | -+----------------------------+-----------------+-----------------------------------------------------+ -| armeabi-v7a (arm-v7a-NEON) | 2.2 | OpenCV_2.4.3.1_Manager_2.3_armv7a-neon-android8.apk | -+----------------------------+-----------------+-----------------------------------------------------+ - +.. include:: ../readme.txt First application start ----------------------- diff --git a/android/service/readme.txt b/android/service/readme.txt index 69b6236e62..7da05853ae 100644 --- a/android/service/readme.txt +++ b/android/service/readme.txt @@ -1,28 +1,33 @@ -OpenCV Manager selection -======================== +How to select the proper version of OpenCV Manager +-------------------------------------------------- -Since version 1.7 several packages of OpenCV Manager is built. Every package includes OpenCV library -for package target platform. The internal library is used for most cases, except the rare one, when -arm-v7a without NEON instruction set processor is detected. In this case additional binary package -for arm-v7a is used. The new package selection logic in most cases simplifies OpenCV installation -on end user devices. In most cases OpenCV Manager may be installed automatically from Google Play. -For such case, when Google Play is not available, i.e. emulator, developer board, etc, you can -install it manually using adb tool: +Since version 1.7 several packages of OpenCV Manager are built. Every package is targeted for some +specific hardware platform and includes corresponding OpenCV binaries. So, in most cases OpenCV +Manager uses built-in version of OpenCV. Separate package with OpenCV binaries is currently used in +a single rare case, when an ARMv7-A processor without NEON support is detected. In this case an +additional binary package is used. The new package selection logic in most cases simplifies OpenCV +installation on end user devices. In most cases OpenCV Manager may be installed automatically from +Google Play. - adb install OpenCV-2.4.3-android-sdk/apk/OpenCV_2.4.3.2_Manager_2.4_.apk +If Google Play is not available (i.e. on emulator, developer board, etc), you can install it +manually using adb tool: -Use table to determine right OpenCV Manager package: +.. code-block:: sh -+----------------------------+-----------------+-----------------------------------------------------+ -| Hardware Platform | Android version | Package name | -+============================+=================+=====================================================+ -| Intel x86 | >= 2.3 | OpenCV_2.4.3.2_Manager_2.4_x86.apk | -+----------------------------+-----------------+-----------------------------------------------------+ -| MIPS | >= 2.3 | OpenCV_2.4.3.2_Manager_2.4_mips.apk | -+----------------------------+-----------------+-----------------------------------------------------+ -| armeabi (arm-v5, arm-v6) | >= 2.3 | OpenCV_2.4.3.2_Manager_2.4_armeabi.apk | -+----------------------------+-----------------+-----------------------------------------------------+ -| armeabi-v7a (arm-v7a-NEON) | >= 2.3 | OpenCV_2.4.3.2_Manager_2.4_armv7a-neon.apk | -+----------------------------+-----------------+-----------------------------------------------------+ -| armeabi-v7a (arm-v7a-NEON) | 2.2 | OpenCV_2.4.3.2_Manager_2.4_armv7a-neon-android8.apk | -+----------------------------+-----------------+-----------------------------------------------------+ + adb install OpenCV-2.4.3-android-sdk/apk/OpenCV_2.4.3.2_Manager_2.4_.apk + +Use the table below to determine proper OpenCV Manager package for your device: + ++------------------------------+--------------+-----------------------------------------------------+ +| Hardware Platform | Android ver. | Package name | ++==============================+==============+=====================================================+ +| armeabi-v7a (ARMv7-A + NEON) | >= 2.3 | OpenCV_2.4.3.2_Manager_2.4_armv7a-neon.apk | ++------------------------------+--------------+-----------------------------------------------------+ +| armeabi-v7a (ARMv7-A + NEON) | = 2.2 | OpenCV_2.4.3.2_Manager_2.4_armv7a-neon-android8.apk | ++------------------------------+--------------+-----------------------------------------------------+ +| armeabi (ARMv5, ARMv6) | >= 2.3 | OpenCV_2.4.3.2_Manager_2.4_armeabi.apk | ++------------------------------+--------------+-----------------------------------------------------+ +| Intel x86 | >= 2.3 | OpenCV_2.4.3.2_Manager_2.4_x86.apk | ++------------------------------+--------------+-----------------------------------------------------+ +| MIPS | >= 2.3 | OpenCV_2.4.3.2_Manager_2.4_mips.apk | ++------------------------------+--------------+-----------------------------------------------------+ From dd8e648d784fec2077139404e3db5e0b5655cc3f Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Tue, 25 Dec 2012 17:49:10 +0400 Subject: [PATCH 10/12] hiding empty menu button on Android 4 --- samples/android/color-blob-detection/AndroidManifest.xml | 2 +- samples/android/tutorial-3-native/AndroidManifest.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/android/color-blob-detection/AndroidManifest.xml b/samples/android/color-blob-detection/AndroidManifest.xml index 9d04092821..d322ba27d3 100644 --- a/samples/android/color-blob-detection/AndroidManifest.xml +++ b/samples/android/color-blob-detection/AndroidManifest.xml @@ -26,7 +26,7 @@ android:largeScreens="true" android:anyDensity="true" /> - + diff --git a/samples/android/tutorial-3-native/AndroidManifest.xml b/samples/android/tutorial-3-native/AndroidManifest.xml index 770474527c..164b81d8d4 100644 --- a/samples/android/tutorial-3-native/AndroidManifest.xml +++ b/samples/android/tutorial-3-native/AndroidManifest.xml @@ -26,7 +26,7 @@ android:largeScreens="true" android:anyDensity="true" /> - + From e21f106159df458348745d42d98f01306c9e1091 Mon Sep 17 00:00:00 2001 From: Kirill Kornyakov Date: Tue, 25 Dec 2012 17:50:31 +0400 Subject: [PATCH 11/12] Updated OpenCV Manager rst documentation --- android/java.rst | 2 +- android/service/doc/BaseLoaderCallback.rst | 17 ++++++---- .../service/doc/InstallCallbackInterface.rst | 2 +- android/service/doc/Intro.rst | 32 +++++++++++-------- android/service/doc/JavaHelper.rst | 19 +++++------ .../service/doc/LoaderCallbackInterface.rst | 12 +++---- android/service/doc/UseCases.rst | 2 +- 7 files changed, 45 insertions(+), 41 deletions(-) diff --git a/android/java.rst b/android/java.rst index b5e3070d28..37b393bd89 100644 --- a/android/java.rst +++ b/android/java.rst @@ -3,4 +3,4 @@ Java API ******** -`Java API reference external link (JavaDoc) `_ \ No newline at end of file +Java API reference (JavaDoc): external `link `_. diff --git a/android/service/doc/BaseLoaderCallback.rst b/android/service/doc/BaseLoaderCallback.rst index d75003877c..3258004c59 100644 --- a/android/service/doc/BaseLoaderCallback.rst +++ b/android/service/doc/BaseLoaderCallback.rst @@ -1,18 +1,20 @@ ********************************************* -Base Loader Callback Interface implementation +Base Loader Callback Interface Implementation ********************************************* .. highlight:: java .. class:: BaseLoaderCallback - Basic implementation of LoaderCallbackInterface. Logic of this implementation is well-described by the following scheme: + Basic implementation of ``LoaderCallbackInterface``. Logic of this implementation is + well-described by the following scheme: .. image:: img/AndroidAppUsageModel.png Using in Java Activity ---------------------- -There is a very base code snippet implementing the async initialization with BaseLoaderCallback. See the "15-puzzle" OpenCV sample for details. +There is a very base code snippet implementing the async initialization with ``BaseLoaderCallback``. +See the "15-puzzle" OpenCV sample for details. .. code-block:: java :linenos: @@ -42,7 +44,7 @@ There is a very base code snippet implementing the async initialization with Bas @Override protected void onResume() { - Log.i(TAG, "called onResume"); + Log.i(TAG, "Called onResume"); super.onResume(); Log.i(TAG, "Trying to load OpenCV library"); @@ -55,6 +57,7 @@ There is a very base code snippet implementing the async initialization with Bas Using in Service ---------------- -Default BaseLoaderCallback implementation treat application context as Activity and calls Activity.finish() method to exit in case of initialization failure. -To override this behavior you need to override finish() method of BaseLoaderCallback class and implement your own finalization method. - +Default ``BaseLoaderCallback`` implementation treats application context as ``Activity`` and calls +``Activity.finish()`` method to exit in case of initialization failure. +To override this behavior you need to override ``finish()`` method of ``BaseLoaderCallback`` class +and implement your own finalization method. diff --git a/android/service/doc/InstallCallbackInterface.rst b/android/service/doc/InstallCallbackInterface.rst index 950b8ec244..f4411f93f4 100644 --- a/android/service/doc/InstallCallbackInterface.rst +++ b/android/service/doc/InstallCallbackInterface.rst @@ -28,7 +28,7 @@ void cancel() .. method:: void cancel() - Installation if package has been canceled. + Installation of package has been cancelled. void wait_install() ------------------- diff --git a/android/service/doc/Intro.rst b/android/service/doc/Intro.rst index 4319090862..d0e9d73470 100644 --- a/android/service/doc/Intro.rst +++ b/android/service/doc/Intro.rst @@ -7,34 +7,38 @@ Introduction .. highlight:: java -OpenCV Manager is an Android service targeted to manage OpenCV library binaries on end users devices. It allows sharing the OpenCV dynamic libraries of different versions between applications on the same device. The Manager provides the following benefits\: +OpenCV Manager is an Android service targeted to manage OpenCV library binaries on end users devices. +It allows sharing the OpenCV dynamic libraries between applications on the same device. The Manager +provides the following benefits\: #. Less memory usage. All apps use the same binaries from service and do not keep native libs inside themselves; #. Hardware specific optimizations for all supported platforms; -#. Trusted OpenCV library source. All packages with OpenCV are published on Google Play service; +#. Trusted OpenCV library source. All packages with OpenCV are published on Google Play market; #. Regular updates and bug fixes; -Usage model for target user ---------------------------- +Usage model for end user +------------------------ .. image:: img/AndroidAppUsageModel.png First OpenCV app\: #. Any OpenCV-dependent app is installed from Google Play marketplace or manually; -#. At the first launch, it suggests installing OpenCV Manager; -#. Then OpenCV Manager is downloaded and installed, using Google Play marketplace service. -#. When Manager has ben started, the application suggests installing OpenCV library for the target device trough Google Play marketplace if it is necessary; -#. After installation is finished, the app may be launched to perform common tasks. +#. At the first launch, it suggests installation of OpenCV Manager; +#. Then OpenCV Manager is downloaded and installed, using the Google Play application. +#. When Manager has been started, the application suggests installation of OpenCV library for the + target device architecture if it is necessary; +#. After the installation is finished, the app may be launched. -Next OpenCV app\: +Subsequent launches of OpenCV apps\: -#. Any OpenCV-dependent app is installed from Google Play marketplace or manually; +#. Any OpenCV-dependent app is installed from Google Play market or manually; #. At the first launch, the app starts as usually; -#. If the selected version is not installed, OpenCV Manager suggests installing OpenCV library for the target device trough Google Play marketplace; -#. After installation is finished, the app may be launched to perform common tasks. +#. If the selected OpenCV version is not installed, OpenCV Manager suggests installing OpenCV + library for the target device through Google Play marketplace; +#. After the installation is finished, the app may be launched. -OpenCV Manager structure ------------------------- +Architecture of OpenCV Manager +------------------------------ .. image:: img/Structure.png \ No newline at end of file diff --git a/android/service/doc/JavaHelper.rst b/android/service/doc/JavaHelper.rst index 102b727d72..9a128db0ab 100644 --- a/android/service/doc/JavaHelper.rst +++ b/android/service/doc/JavaHelper.rst @@ -12,23 +12,27 @@ boolean initDebug() .. method:: static boolean initDebug() - Loads and initializes OpenCV library from within current application package. Roughly it is analog of ``system.loadLibrary("opencv_java")``. + Loads and initializes OpenCV library from within current application package. Roughly it is + analog of ``system.loadLibrary("opencv_java")``. :rtype: boolean; :return: returns true if initialization of OpenCV was successful. -.. note:: This method is deprecated for production code. It is designed for experimantal and local development purposes only. If you want to publish your app use approach with async initialization. +.. note:: This method is deprecated for production code. It is designed for experimental and local + development purposes only. If you want to publish your app use approach with async + initialization. boolean initAsync() ------------------- .. method:: static boolean initAsync(String Version, Context AppContext, LoaderCallbackInterface Callback) - Loads and initializes OpenCV library using OpenCV Manager service. + Loads and initializes OpenCV library using OpenCV Manager. :param Version: OpenCV Library version. :param AppContext: application context for connecting to the service. - :param Callback: object, that implements LoaderCallbackInterface for handling connection status (see BaseLoaderCallback). + :param Callback: object, that implements ``LoaderCallbackInterface`` for handling connection + status (see ``BaseLoaderCallback``). :rtype: boolean; :return: returns true if initialization of OpenCV starts successfully. @@ -43,10 +47,3 @@ OpenCV version constants .. data:: OPENCV_VERSION_2_4_3 OpenCV Library version 2.4.3 - -Other constatnts ----------------- - -.. data:: OPEN_CV_SERVICE_URL - - Url for OpenCV Manager on Google Play (Android Market) \ No newline at end of file diff --git a/android/service/doc/LoaderCallbackInterface.rst b/android/service/doc/LoaderCallbackInterface.rst index 08bc160961..440b6b6737 100644 --- a/android/service/doc/LoaderCallbackInterface.rst +++ b/android/service/doc/LoaderCallbackInterface.rst @@ -12,9 +12,9 @@ void onManagerConnected() .. method:: void onManagerConnected(int status) - Callback method that is called after OpenCV Library initialization. + Callback method that is called after OpenCV library initialization. - :param status: status of initialization (see Initialization Status Constants). + :param status: status of initialization (see "Initialization Status Constants" section below). void onPackageInstall() ----------------------- @@ -23,7 +23,7 @@ void onPackageInstall() Callback method that is called in case when package installation is needed. - :param callback: answer object with approve and cancel methods and package description. + :param callback: answer object with ``install`` and ``cancel`` methods and package description. Initialization status constants ------------------------------- @@ -34,15 +34,15 @@ Initialization status constants .. data:: MARKET_ERROR - Google Play (Android Market) cannot be invoked + Google Play (Android Market) application cannot be invoked .. data:: INSTALL_CANCELED - OpenCV library installation was canceled by user + OpenCV library installation was cancelled by user .. data:: INCOMPATIBLE_MANAGER_VERSION - Version of OpenCV Manager Service is incompatible with this app. Service update is needed + Version of OpenCV Manager is incompatible with this app. Manager update is needed. .. data:: INIT_FAILED diff --git a/android/service/doc/UseCases.rst b/android/service/doc/UseCases.rst index 59d6215b8e..bbc7da02c3 100644 --- a/android/service/doc/UseCases.rst +++ b/android/service/doc/UseCases.rst @@ -20,7 +20,7 @@ If OpenCV library installation has been approved\: .. image:: img/LibInstallAproved.png -If OpenCV library installation has been canceled\: +If OpenCV library installation has been cancelled\: .. image:: img/LibInstallCanceled.png From 16687a265546c0533dc629917c959233c68fc7ec Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 25 Dec 2012 18:05:05 +0400 Subject: [PATCH 12/12] Explicitly use double precision sin & cos in hough implementation On some platforms sin and cos are calculated in single precision resulting in diversity of results. --- modules/imgproc/src/hough.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/imgproc/src/hough.cpp b/modules/imgproc/src/hough.cpp index 6b5c2e45ce..3e737d8bb6 100644 --- a/modules/imgproc/src/hough.cpp +++ b/modules/imgproc/src/hough.cpp @@ -118,8 +118,8 @@ icvHoughLinesStandard( const CvMat* img, float rho, float theta, float ang = 0; for(int n = 0; n < numangle; ang += theta, n++ ) { - tabSin[n] = (float)(sin(ang) * irho); - tabCos[n] = (float)(cos(ang) * irho); + tabSin[n] = (float)(sin((double)ang) * irho); + tabCos[n] = (float)(cos((double)ang) * irho); } // stage 1. fill accumulator