Так как я впервые использовал Android Studio, я многому научился. Это заняло у меня некоторое время, но вот ответы на вопросы, которые я отправил.
Вопрос 1: Является ли указанный imagePath = "//drawable//ring.png" правильным для доступа к файлу ring.png?
Скорее всего, это неправильный путь для доступа к изображениям с целью обработки изображений и т. Д. Выдвижная папка все еще может использоваться для обновления ex. просмотр изображения путем установки src для просмотра изображения на изображение
imageView.setImageResource(R.drawable.ring);
При работе с изображениями и объектами Mat я обнаружил, что лучше всего использовать мост отладки Android для копирования файлов на SD-карту устройства. Эта ссылка предоставит вам необходимые шаги для установки adb https://www.howtogeek.com/125769/how-to-install-and-use-abd-the-android-debug-bridge-utility/
По завершении копирования изображений на SD-карту. Путь к файлу можно найти, используя встроенную функцию Java Environment.getExternalStorageDirectory()
. Что выглядит примерно так: /storage/emulated/0/YOUR_file
, это зависит от места, в которое были скопированы файлы.
Полезный совет: Загрузка ES File Explorer для устройства, помогающего перемещаться по внешнему или внутреннему хранилищу.
Вопрос 2. Требуются ли какие-либо разрешения, позволяющие ndk получать доступ к папкам res?
Метод, который я использовал, не нуждался в каких-либо разрешениях. Однако в настоящее время сторона NDK не может напрямую считывать изображение с SD-карты, изображение должно быть передано со стороны Java с использованием assets или , передавая адрес изображения который был прочитан в объект Mat (сторона Java).
Для доступа к SD-карте необходимо разрешение на чтение и запись. Это должно быть установлено в manifest.xml и должно быть правильно реализовано в коде. На YouTube много хороших учебников.
Вопрос 3: Существуют ли аналогичные методы для присвоения изображения объекту Mat?
Этот вопрос сейчас кажется излишним, есть много способов снять кожу с кошки .
Короче говоря, я думаю, что при использовании Opencv4Android легче придерживаться стороны Java, и требуется некоторая форма обработки изображений. Чтобы начать работу с Java, приведу небольшой фрагмент моего кода.
Mat image;
String imageInSD = Environment.getExternalStorageDirectory()+"/Pictures/Data/Birds/"(ImageFolders[i])+"/"+String.valueOf(id)+".png";
image = Imgcodecs.imread(imageInSD,Imgcodecs.IMREAD_COLOR);
Удачи !!