Портирование проекта OpenCV с рабочего стола C++ на Android NDK
Я намерен протестировать некоторые модификации алгоритма OpenCV, в частности детектор и дескриптор функции ORB. Поэтому я начинаю разработку на своем рабочем столе с использованием C++ и скопировал некоторые файлы.cpp из источников OpenCV, в частности orb.ccp, fast.cpp, precomp.cpp, fast_score.cpp. Первый - это основной файл алгоритма, второй - детектор функций, используемый ORB, третий и четвертый необходимы, как указано с помощью "include" в fast.cpp. Очевидно, я скопировал заголовки и объявления методов из OpenCV .hpp(s), создав мои заголовки. Я изменил имена двух задействованных классов (ORB и FAST -> myORB и myFAST) во всех файлах, чтобы вы могли отличать вызовы моих версий алгоритма от вызовов OpenCV, поскольку все еще необходимо иметь OpenCV для все функции imgproc, ядро, класс Mat... используемые внутри файлов cpp изменены.
Пока все хорошо, это работает, я могу использовать свою копию ORB и в конечном итоге применить изменения в алгоритме.
Проблемы возникают при переходе на Android NDK. После настройки проекта с помощью NDK я создаю метод JNI, в котором я реализую код, который будет использовать алгоритм ORB, затем импортирую свои файлы.cpp и.hpp выше, задаю файл.mk и другие связанные вещи для компиляции моих файлов, и, очевидно, настроить проект для использования OpenCV4Android.
Проблема в следующем: мой алгоритм работает, код скомпилирован / собран и запущен Eclipse ADT, и я могу вызвать класс myORB. Однако, когда я открываю свою версию файлов для istance (my)orb.cpp в редакторе ADT, возникают проблемы: в коде есть десятки ошибок по сравнению с (opencv) методами, которые не существуют ("не удалось решить")), (opencv) методы, вызываемые с недопустимыми аргументами... Так что после того, как я открыл файл, он показывает ошибки, и тогда невозможно снова построить проект в ADT, но если я удаляю и копирую файл.cpp обратно в проект снова компилируется без проблем, пока я его снова не открою...
1 ответ
Проблема связана с Android ADT и / или Android NDK. Редактор выявляет ложные ошибки, на самом деле Консоль указывает, что код C компилируется без ошибок. Однако Eclipse не позволяет запускать код / приложения, которые, по его словам, содержат ошибки. Таким образом, самый быстрый способ обойти это - изменить свойства проекта в:
Project -> Properties -> C / C + + General -> Code Analysis
изменение "серьезности" "проблем", которые появляются в редакторе, на "предупреждение" или другие типы.