Обработка изображения растрового изображения, предназначенного для Android, в OpenCV (требуется преобразование в объект Mat)?

Я пытаюсь обработать изображение BMP, полученное из намерения камеры Android, с помощью следующих шагов:

  1. Obtain <Код>bmp image from intent
  2. Convert <Код>bmp image to <Код>Mat object for OpenCV processing (problem starts here)
  3. Do needed OpenCV processing (through sending <Код>Mat object, obj, as obj<Код>.getNativeObjAddr() to native processing, or perform it locally in java).
  4. Convert <Код>Mat object back to <Код>bmp

Проблема действительно не новая. Я нашел множество подобных вопросов в Интернете, однако ни одна из них, похоже, не разрешает ситуацию.

Результаты (проблема)

The intention is to display the processed image (that undergoes the above 4 steps) in an <Код>ImageView object. After running, the ImageView however remains unchanged and logcat emits the following warning on reaching the line calling <Код>Utils.bitmapToMat()

<Код> W/System.err(3872): java.lang.IllegalArgumentException: mat == null

Код

Below is the Код's outline that is used in the <Код>onActivityResult method (<Код>resultant_bmp is the acquired bmp from the camera intent. It displays successfully on its own).
<Код>filePath is the file path, name and extension included, of <Код>resultant_bmp.

The first 3 lines following the starting <Код>if condition are from here, where its use seems to work fine in the mentioned question.

<Код>Bitmap resultant_bmp /*image from camera*/,   
       bmp /*image after opencv processing*/;
Mat rgb_img, gray_img;      

if (OpenCVLoader.initDebug()) { 

     BitmapFactory.Options options = new BitmapFactory.Options();
     options.inPreferredConfig = Config.RGB_565;
     resultant_bmp= BitmapFactory.deКодFile(filePath, options);

     /****************** Problem starts HERE ******************
     Last point reachable before Logcat states:
       W/System.err(4460):java.lang.IllegalArgumentException: mat == null   

     After this point, the program doesn't crash, but expected results 
       in the imageView (last line of Код) do not result.
     **********************************************************/  

     Utils.bitmapToMat(resultant_bmp, rgb_img);                                 
     Imgproc.cvtColor(rgb_img, gray_img, Imgproc.COLOR_RGBA2GRAY); 

     /*Do opencv processing (on gray_img) here*/

     Utils.matToBitmap(gray_img, bmp);

     imageView.setImageBitmap(bmp);

}

Previous attempts& research

  • I found a similar problem here and tried, as recommended, to push the file <Код>libopencv_java.so to <Код>system/lib on the device, using adb in command line and received the error:

<Код>failed to copy 'libopencv_java.so' to 'system/lib/libopencv_java.so': Read-only file system

  • This question considers the same problem domain in the current question; the Код provided above follows a similar pattern as that suggested there, which still doesn't work.

  • Based on this answer (as well as this aforementioned one), I added the following lines to the Код:

<Код>System.loadLibrary("opencv_java");
System.loadLibrary("libopencv_java");

  • I have added the OpenCV library to the project properties; as well as the NDKROOT variable indicating where the NDK root path lies, as explained further here.

  • I've tried the image processing required (in step 3 above) in another working sample of OpenCV's, so the problem definitely lies within step 2 (above); conversion of a <Код>bmp to a <Код>Mat object.

Там должно быть простое решение, но я не могу найти его. Помощь была бы очень признательна, если это возможно.

Спасибо за ваше время.

0
nl ja de

1 ответы

Вы инициализировали переменную mat? Я не смог найти его в предоставленном коде.

Добавьте это, прежде чем пытаться преобразовать в мат.

Mat rgb_img = new Mat();
1
добавлено
Большое спасибо; это действительно проблема. Нет, нет. Добавление этой строки будет проходить через logcat, но не будет отображаться в imageView (в отношении шага 4, а не 2). Сделать это; следует также добавить следующую строку (как сделано здесь ): bmp = Bitmap.createBitmap (gray_img.cols (), gray_img.rows (), Bitmap.Config.ARGB_8888); Теперь он работает.
добавлено автор Noha Kareem, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)