Я намерен протестировать некоторые модификации алгоритма OpenCV, в частности детектор функций ORB и дескриптор. Итак, я начал разработку на своем рабочем столе с помощью C++ и скопировал некоторые файлы .cpp из исходников OpenCV, в частности orb.ccp, fast.cpp, precomp.cpp, fast_score.cpp. Первый — основной файл алгоритма, второй — детектор признаков, используемый ORB, третий и четвертый необходимы, так как вызываются с помощью «includes» в fast.cpp. Очевидно, я скопировал заголовки и объявления методов из OpenCV .hpp(s), создав свои заголовки. Я изменил имена двух задействованных классов (ORB и FAST -> myORB и myFAST) во всех файлах, чтобы вы могли отличить вызовы моих версий алгоритма от вызовов OpenCV, так как для все функции imgproc, ядро, класс Mat ... используемые внутри измененных файлов cpp.
Пока все хорошо, все работает, я могу использовать свою скопированную версию ORB и в конечном итоге применить изменения к алгоритму.
Проблемы возникают, когда я переключаюсь на Android NDK. Что я делаю после настройки проекта с помощью NDK, так это создаю метод JNI, в котором я реализую код, который будет использовать алгоритм ORB, затем я импортирую свои файлы .cpp и .hpp выше, устанавливаю файл .mk и другие связанные stuffs для компиляции моих файлов и, очевидно, настроил проект на использование OpenCV4Android.
Проблема в следующем: мой алгоритм работает, код компилируется/собирается и запускается Eclipse ADT, и я могу вызвать класс myORB. Однако, когда я открываю свою версию файлов, например (my)orb.cpp, в редакторе ADT, возникают проблемы: в коде есть десятки ошибок относительно методов (opencv), которые не существуют («не удалось разрешить» ), (opencv) методы, вызываемые с недопустимыми аргументами... Итак, после того, как я открыл файл, он показывает ошибки, а затем невозможно снова собрать проект в ADT, но если я удалю и скопирую обратно файл .cpp в проект снова компилируется без проблем, пока я его снова не открою...