пятница, 5 ноября 2010 г.

Компиляция opencv под андроид

На днях наткнулся на интересную статью в которой разработчики перенесли возможности библиотеки opencv в телефон на основе операционной системы Android http://code.google.com/p/android-opencv/wiki/CVCamera. Особенность этого проекта в том, что у авторов получилось создать готовое приложение, на которое можно посмотреть.

Я решил повторить данный эксперимент и собственно что получилось.

Далее я опишу детально как надо собрать opencv под android.
Логическое отступление. Android - это Java подобная оболочка на ядре Linux. Для того чтобы использовать все функции opencv (которая написана на C++), нам во первых собрать ее под Linuxом или эмулятором Linuxа с использованием инструментов, которые нам предоставил Гугл.
Собирать мы будем ее в динамические библиотеки (*.so) и будем использовать через враперы JNI. (Java Native Interface).

Шаг 0. Необходимый инструментарий.
Если Вы работаете под Linux то вам не нужно будет устанавливать Cygwin.

0.1. Загружаем эмулятор линукса Cygwin (http://www.cygwin.com/)
0.2. Выбираем путь установки у меня он будет C:/Develop/cygwin
Во время установки он спросит какие компоненты нам будут нужны:
       make - сборщик
       cmake - сборщик
       g++  - компилятор для c++
       gcc - компилятор для c
       swig - инструмент для создания интерфейсов
Если сразу компоненты не установились запустите установщик еще раз он будет дополнять программы.

0.3. Нам надо загрузить android-ndk. Обычный нам не будет подходить т.к. обычный с сайта Гугл не умеет компилировать с++. По этому нам необходимо загрузить http://crystax.net/android/ndk-r4.php. Загружаем на компьютер и распаковываем в каталог: C:/Develop/cygwin/home/username, где username  - имя вашего пользователя у меня SibAS.

Нам необходимо добавить данный каталог к системному пути:
для этого 

Мой компьютер> Свойства> Дополнительные параметры системы> Закладка дополнительно> Переменные среды
Добавим переменную PATH со значением C:\Develop\cygwin\home\SibAS\android-ndk-r4-crystax;C:\Develop\cygwin\bin;

Шаг 1. Запускаем Cygwin и проверяем как все ли работает.
cd  android-ndk-r4-crystax
cd samples
cd hello-jni
ndk-build

 Экран того что мы должны увидеть.
Если возникли ошибки они могут быть из-за путей (проверьте PATH) наберите в echo $PATH если все пути совпадают то ошибке в конфигурации cygwin - он напишет каких приложений не хватает и вы сможете их загрузить.

Отлично! Мы смогли собрать тестовое приложение!

Теперь очередь за opencv.

Шаг 2. Нам надо загрузить исходный код проекта. С репозитория http://android-opencv.googlecode.com/svn/trunk/. Воспользуемся svn клиентом http://tortoisesvn.tigris.org/ для загрузки репозитория (с помощью удобного интерфейса) в папку C:/Develop/cygwin/home.

Отлично теперь в папке C:/Develop/cygwin/home лежат следующие папки: android-ndk-r4-crystax opencv samples (последнее две из проекта)

В Cygwin переходим в папку opencv
cd opencv
и запускаем сборку...
sh build.sh

Собираться все это добро будет порядка часа так что можно посмотреть фильм или почитать книжку. Когда все готово мы увидим следующий экран:



OpenCV собрано!

Шаг 3. Собираем пример
cd samples (которые мы загрузили с проектом а не с android-ndk)
cd CVCamera
sh build.sh



Проект собран в следующем сообщении будет описано как запустить его из eclipse

Комментариев нет:

Отправить комментарий