Basically, we have a choice among the following approaches:
Let's look at each of these alternatives in detail.
Tegra Android Development Pack (TADP) contains a complete, preconfigured development environment for Android, OpenCV, and some other libraries. TADP builds apps that are optimized for NVIDIA's Tegra processors. Despite being optimized for Tegra, the apps are compatible with other hardware too.
If you are setting up an Android development environment from scratch, I recommend TADP. It contains recent versions of all our required software and its setup process is simple.
TADP also contains some extras that we do not require for this book. For a complete list of TADP's contents, see the official description at https://developer.nvidia.com/tegra-android-development-pack.
To set up TADP, we just need to download and install it from a secure section of NVIDIA's website. Here are the required steps:
<tadp>
. By default, <tadp>
is C:\NVPACK
(Windows) or ~/NVPACK
(Mac and Ubuntu).That's all! Before proceeding, let's just take a note of the locations where TADP has installed certain components. For TADP 2.0r2 (the latest version at the time of writing), the locations are as follows:
<tadp>/android-sdk-macosx
. We will refer to this location as <android_sdk>
.<tadp>/android-ndk-r8d
. We will refer to this location as <android_ndk>
.<tadp>/OpenCV-2.4.3.2-android-sdk-tadp
. We will refer to this location as <opencv>
.<tadp>/eclipse
. We will refer to this location as <eclipse>
.Now, we can proceed to Building the OpenCV Samples with Eclipse, later in this chapter.
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you. The example code for this book is also available from the author's website at http://nummist.com/opencv/.
Instead of using TADP as a ready-made solution, we may assemble our own development environment. Broadly, this task has two stages:
Let's start by looking at the setup steps for a general-purpose Android development environment. We will not delve into very much detail here, because good instructions are available at the given links and, because you, as an Android developer, have probably been through similar steps before.
Here are the steps:
<eclipse>
. There are many versions from which we may choose. Google provides an Eclipse distribution called Android Developer Tools (ADT) Bundle, which comes with Android SDK and the ADT plugin prepackaged and preconfigured. ADT Bundle is available at http://developer.android.com/sdk/index.html. Many other up-to-date Eclipse distributions are available at http://www.eclipse.org/downloads/. Of these, Eclipse for Mobile Developers is a good and minimalist choice as a foundation for an Android development environment.<android_sdk>
. Open Eclipse and install the ADT plugin according to the official instructions at http://developer.android.com/sdk/installing/installing-adt.html. Restart Eclipse. A window, Welcome to Android Development, should appear. Click on Use Existing SDKs, browse to <android_sdk>
, and click on Next. Close Eclipse.<android_ndk>
.PATH
to include <android_sdk>/platform-tools
and <android_sdk>/tools
. Also, create an environment variable named NDKROOT
with the value as <android_ndk>
. (If you are unsure how to edit PATH
and other environment variables, see Appendix A: Editing environment variables.)Editing environment variables on Windows
The system's Path
variable and other environment variables can be edited in the Environment Variables
window of Control Panel.
On Windows Vista/7/8, open the Start menu and launch Control Panel. Now, go to System and Security | System | Advanced system settings. Click on the Environment Variables button.
On Windows XP, open the Start menu and go to Control Panel | System. Click on the Advanced tab. Click on the Environment Variables button.
Now, under System variables, select an existing environment variable, such as Path
, and click on the Edit button. Alternatively, make a new environment variable by clicking on the New button. Edit the variable's name and value as needed. For example, if we want to add C:\android-sdk\platform-tools
and C:\android-sdk\tools
to Path
, we should append ;C:\android-sdk\platform-tools;C:\android-sdk\tools
to the existing value of Path
. Note the use of semicolons as separators.
To apply the changes, click on all the OK buttons until we are back in the main window of Control Panel. Now, log out and again log in.
Editing environment variables on Mac
Edit ~/.profile
.
To append to an existing environment variable, add a line such as export PATH=$PATH:~/android-sdk/platform-tools:~/android-sdk/tools
. This example appends ~/android-sdk/platform-tools
and ~/android-sdk/tools
to PATH
. Note the use of colons as separators.
To create a new environment variable, add a line such as export NDKROOT=~/android-ndk
.
Save your changes, log out, and again log in.
Editing environment variables on Ubuntu
Edit ~/.pam_environment
.
To append to an existing environment variable, add a line such as PATH DEFAULT=${PATH}:~/android-sdk/platform-tools:~/android-sdk/tools
. This example appends ~/android-sdk/platform-tools
and ~/android-sdk/tools to PATH
. Note the use of colons as separators.
To create a new environment variable, add a line such as NDKROOT DEFAULT=~/android-ndk
.
Save your changes, log out, and again log in.
Now, we have an Android development environment but we still need OpenCV. We may choose to download a prebuilt version of OpenCV or we may build it from source. These options are discussed in the following two subsections.
Generally, Android applications should use a prebuilt version of OpenCV. One important reason is that the prebuilt versions are available for Android users as shared libraries, which save disk space and simplify updates.
For the purpose of this book's project, there is no need to build OpenCV from source. We just mention this option for completeness, since it may be of interest to advanced users who want to modify OpenCV.
The prebuilt versions of OpenCV4Android can be downloaded from http://sourceforge.net/projects/opencvlibrary/files/opencv-android/. Look for files that have opencv-android
in the name, such as OpenCV-2.4.5-android-sdk.zip
(the latest version at the time of writing). Download the latest version and unzip it to any destination, which we will refer to as <opencv>
.
Alternatively, the process for building OpenCV4Android from trunk (the latest, unstable source code) is documented at http://code.opencv.org/projects/opencv/wiki/Building_OpenCV4Android_from_trunk. For a summary of the process for building from trunk, continue reading this section. Otherwise, skip ahead to Building the OpenCV samples with Eclipse, later in this chapter.
To build OpenCV from source, we need the following additional software:
$ sudo apt-get install git-core
.$ sudo apt-get install cmake
.$ sudo apt-get install ant
. On Windows or Mac, download Ant from http://ant.apache.org/bindownload.cgi and unzip it to any destination, which we will refer to as <ant>
. Make the following changes to your environment variables:<ant>/bin
to PATH
.ANT_HOME
, with the value <ant>
.Path
(Windows) or PATH
(Mac, Linux, or other Unix-like systems). The OpenCV build scripts do not run properly with Python 3.0 or greater.Once we have these prerequisites, we may download the OpenCV source code to any location, which we will refer to as <opencv_source>
. Then, we may build it using an included script. The steps are platform-specific, and are described as follows:
On Windows, copy <opencv>\android\scripts\wincfg.cmd.tmpl
to <opencv>\android\scripts\wincfg.cmd
. Edit <opencv>\android\scripts\wincfg.cmd
. The locations of several of the prerequisites are declared in this file. Modify them so that they are correct for your system. Save your changes. Then, open Git Bash (Git's command prompt) and run the following commands:
$ git clone git://code.opencv.org/opencv.git <opencv_source> $ cd <opencv_source>/android $ scripts/cmake_android.cmd $ cd build $ make -j8
On Mac, Ubuntu, or other Unix-like systems, open Terminal (or another command line shell) and run the following commands:
$ git clone git://code.opencv.org/opencv.git <opencv_source> $ cd <opencv_source>/android $ sh ./scripts/cmake_android.sh $ cd build $ make -j8
If all goes well, we should get a build of OpenCV4Android in <opencv_source>/android/build
. We may move it elsewhere if we wish. We will refer to its final location as <opencv>
.