Opencv (3.4.4) с NEON предоставляет несколько неопределенных символов (ANDROID) - PullRequest
0 голосов
/ 22 ноября 2018

Системная информация (версия)

OpenCV => 3.4.4

Платформа => ARM (armeabiv7-a)

Уровень Android API => 24

Компилятор => Clang 5.0

Android STL => gnustl_shared

ВЕРСИЯ NDK => NDK 15c

ИСПОЛЬЗУЕТСЯ ИНСТРУМЕНТАЛЬНО => OpenCV 3.4.4 набор инструментов android.

Цель моего запроса

Opti => NEON для Opencv (armeabiv7-a с NEON)

Введение


Мой проект будет использовать многие вещи с Opencv, в Window мы не можем видеть задержки, однако в Android мы можем их видеть.

После прочтения большого количества статей / форумов / каналов о Opencv сAndroid, я видел, что Opencv нужен NEON на Android, ARM, чтобы делать что-то хорошо и без задержек и работать с оптимизацией

Настроить / сделать Shared Lib


Итак, на сегодняшний день,Я скачал источники OpenCv 3.4.4 с официального сайта, я запустил его в свой CMAKE-GUI, я сделал много исправлений для успешной сборки, но хотел бы отметить, что я не отключил основные модули из opencv, как (core или любые другие).

(Если необходимо, я могу разместить здесь свой вывод cmake.)

Затем, после настройки и создания, у меня есть общая библиотекакоторый будет связан с моим проектом Android Studio cmakelists и другими вещами ..

После правильной синхронизации я создал свой проект.

Произошли ошибки при Android Studio, скомпилировавшем проект


Итак, я столкнулся с несколькими неопределенными символами только с opencv.

Мы можем их видеть:

   error: undefined reference to 'cv::read(cv::FileNode const&, std::__ndk1::vector<cv::KeyPoint, std::__ndk1::allocator<cv::KeyPoint> >&)'
  error: undefined reference to 'cv::write(cv::FileStorage&, cv::String const&, std::__ndk1::vector<cv::KeyPoint, std::__ndk1::allocator<cv::KeyPoint> > const&)'
  error: undefined reference to 'cv::KeyPointsFilter::retainBest(std::__ndk1::vector<cv::KeyPoint, std::__ndk1::allocator<cv::KeyPoint> >&, int)'
  error: undefined reference to 'cv::read(cv::FileNode const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)'
  error: undefined reference to 'cv::KeyPointsFilter::retainBest(std::__ndk1::vector<cv::KeyPoint, std::__ndk1::allocator<cv::KeyPoint> >&, int)'
  error: undefined reference to 'cv::KeyPointsFilter::retainBest(std::__ndk1::vector<cv::KeyPoint, std::__ndk1::allocator<cv::KeyPoint> >&, int)'
  error: undefined reference to 'cv::DescriptorMatcher::knnMatch(cv::_InputArray const&, cv::_InputArray const&, std::__ndk1::vector<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> >, std::__ndk1::allocator<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> > > >&, int, cv::_InputArray const&, bool) const'
  error: undefined reference to 'cv::DescriptorMatcher::knnMatch(cv::_InputArray const&, cv::_InputArray const&, std::__ndk1::vector<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> >, std::__ndk1::allocator<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> > > >&, int, cv::_InputArray const&, bool) const'
  error: undefined reference to 'cv::KeyPointsFilter::retainBest(std::__ndk1::vector<cv::KeyPoint, std::__ndk1::allocator<cv::KeyPoint> >&, int)'
  error: undefined reference to 'cv::DescriptorMatcher::knnMatch(cv::_InputArray const&, cv::_InputArray const&, std::__ndk1::vector<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> >, std::__ndk1::allocator<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> > > >&, int, cv::_InputArray const&, bool) const'
  error: undefined reference to 'cv::DescriptorMatcher::knnMatch(cv::_InputArray const&, cv::_InputArray const&, std::__ndk1::vector<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> >, std::__ndk1::allocator<std::__ndk1::vector<cv::DMatch, std::__ndk1::allocator<cv::DMatch> > > >&, int, cv::_InputArray const&, bool) const'
  error: undefined reference to 'cv::drawKeypoints(cv::_InputArray const&, std::__ndk1::vector<cv::KeyPoint, std::__ndk1::allocator<cv::KeyPoint> > const&, cv::_InputOutputArray const&, cv::Scalar_<double> const&, int)'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.

Я не знаю, что она делает, но яМне нужны эти оптимизации, и я буду очень признателен, если у вас есть что рассказать.

С наилучшими пожеланиями !!

...