Перенос проекта OpenCV с рабочего стола C++ на Android NDK

Я намерен протестировать некоторые модификации алгоритма 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 в проект снова компилируется без проблем, пока я его снова не открою...


person Alessandro Gaietta    schedule 26.06.2013    source источник


Ответы (1)


Проблема связана с Android ADT и/или Android NDK. Редактор выявляет ложные ошибки, фактически Консоль показывает, что код на Си скомпилирован без ошибок. Однако Eclipse не позволяет запускать код/приложения, которые, по его словам, содержат ошибки. Поэтому самый быстрый способ обойти это — изменить свойства проекта в:

Project -> Properties -> C / C + + General -> Code Analysis

изменение «серьезности» «проблем», появляющихся в редакторе, на «предупреждение» или другие типы.

person Alessandro Gaietta    schedule 18.07.2013
comment
ву, спасибо, это сработало для меня, но это не настоящее решение ...... есть ли решение этой проблемы - person MolhamStein; 18.03.2014