Android Computer Vision Сравнение JavaCV OpenCV FastCV

Я работаю над школьным проектом, и часть его должна быть связана с текущей ситуацией с библиотеками компьютерного зрения для Android. Я пошел с ним с большим энтузиазмом, потому что компьютерное зрение кажется увлекательным предметом, но я искал больше недели, и я не нашел много. Я хотел бы иметь возможность предоставлять информацию о самих библиотеках и о сравнении между ними.

Я расскажу то, что нашел.

OpenCV

  • Кажется самым продвинутым и самым популярным.

  • Обеспечивают наибольшее количество функций

  • У него была проблема с обратной совместимостью

  • (По крайней мере, я слышал, но у меня есть нулевая информация об этом)

  • Имеет большое количество книг об этом (по крайней мере, для версии на С ++)

JavaCV

  • Является оболочкой для нескольких других библиотек, включая opencv

FastCv

  • Новый с Qualcomm позади него.

Wikitude

  • Это больше для расширенной реальности, но в ее ядре по-прежнему остается компьютерное зрение.

Как вы можете видеть, у меня есть небольшая информация об этом, и мои собственные тесты для каждой библиотеки намного превосходят мои нынешние навыки компьютерного видения.

С наилучшими пожеланиями, Питер.

Solutions Collecting From Web of "Android Computer Vision Сравнение JavaCV OpenCV FastCV"

В основном есть два варианта: OpenCV и FastCV

OpenCV – более зрелая библиотека с гораздо большей функциональностью, чем FastCV. Для многих задач компьютерного видения вы можете найти только самые основные функции в FastCV, тогда как вы можете использовать почти все популярные альтернативы в OpenCV. Например, проверьте доступные детекторы функций. OpenCV имеет Harris, SURF, SIFT, FAST и т. Д. FastCV, с другой стороны, имеет только Harris и FAST. OpenCV содержит аппаратную оптимизацию для разных HW, включая настольные компьютеры и мобильные вычислительные устройства. Возможность использования OpenCV на рабочем столе предоставляет вам более гибкий вариант разработки, так как вы можете настроить и протестировать код на быстром настольном компьютере, прежде чем приступать к разработке мобильной разработки. Также OpenCV рассматривается как часть предложения компании Khronos Computer Vision Group . Итак, если это будет одобрено, OpenCV может стать стандартным API для компьютерного зрения. Насколько я могу судить, FastCV обеспечивает превосходную оптимизацию для процессоров Snapdragon. Это может сыграть важную роль в решении в краткосрочной перспективе, но я уверен, что OpenCV закроет разрыв очень быстро, если таковой будет.

Если вы выберете путь OpenCV, то есть два подпутника: OpenCV с Android NDK и JavaCV с Android SDK. JavaCV – это оболочка OpenCV на основе JavaCpp. JavaCV в основном обертывает C API, хотя OpenCV также предоставляет объектно-ориентированный C ++ API. Например, C ++ API обрабатывает освобождение неиспользуемой памяти автоматически. Однако C API (следовательно, JavaCV) требует, чтобы вы вручную обрабатывали неиспользуемые изображения. Также, когда вы сталкиваетесь с проблемой в JavaCV, трудно решить проблему, потому что слишком много указаний на проверку. Проблемы легче найти при непосредственном использовании OpenCV. Однако, в случае Android, дополнительную проблему NDK нельзя забывать.

Если доступная функциональность OpenCV необходима для конкретного приложения, и не требуется никакого кода обработки пиксельных уровней, JavaCV – это путь. Однако, если требуется значительный объем кода обработки изображений, код Java замедлит работу, и в любом случае вам нужно будет переключиться на NDK. В последнем случае OpenCV является альтернативой выбору.

Я бы использовал OpenCV, поскольку это лучшая библиотека компьютерного зрения прямо сейчас. Вы запрограммируете свои функции на C ++, а затем скомпилируете приложение Android с помощью библиотеки JNI. У вас есть информация о том, как это сделать в официальной документации .

Я работал с этой конфигурацией, и производительность OpenCV в Android очень приятная. Вы заметите преимущества, если вы выполняете некоторые функции в арифметике с фиксированной точкой. Удачи

Для проекта на базе Android можно легко начать с JavaCV. Он содержит почти все функции, доступные на OpenCV.

Но на JavaCV нет богатой документации, но OpenCV имеет. Таким образом, вы можете найти соответствующие методы из документации OpenCV и использовать их в JavaCV (те же имена методов).

Здесь есть полный документ. Это обсуждается, как настроить JavaCV на eclipse – среду Android.

Визирь ответил довольно хорошо, но у меня создается впечатление, что его анализ ошибочен. Я думаю, он не знает, что Opencv имеет версию для Android под названием OpenCV4Android. Это Java-оболочки для функциональности c ++, то есть вы можете избежать использования Android NDK и запрограммировать все на Java. Это сделало бы «неофициальную» библиотеку JavaCV избыточным, за исключением того факта, что эта, помимо упаковки opencv, также обертывает много других хороших библиотек CV.

Редактировать:

Это не изменяет выводы визиря о рекомендациях OpenCV, это фактически добавляет больше точек для его выбора.

Существует новый вариант для CV на Android, API Google Mobile Vision . API открывается через com.google.android.gms.vision и позволяет обнаруживать различные типы объектов (лица, штрих-коды и черты лица) с учетом произвольного растрового изображения.

Начните с OpenCV, а затем перенесите важные функции, такие как отслеживание объектов, свертки, расширение / эрозия и, возможно, SVM. В случае компиляции для android оберните эти вызовы с помощью #ifdef __ANDROID__, а затем просто вызовите эквивалент FastCV. Абстракция – ваш друг.