Алгоритм водораздела с прикосновением к изображению для добавления маркера OpenCV android

Я пытаюсь сохранить сегменты водораздела в виде изображения на SD-карту в Android.

Код попробовал на С++ и работает нормально

for (int m = 0; m < images.size(); m++) {
            //wshed = wshed*0.5 + imgGray*0.5;

            cv::Mat input_bgra;
            cv::cvtColor(images[m], input_bgra, CV_BGR2BGRA);

            // find all white pixel and set alpha value to zero:
            for (int y = 0; y < input_bgra.rows; ++y)
                for (int x = 0; x < input_bgra.cols; ++x)
                {
                    cv::Vec4b & pixel = input_bgra.at<cv::Vec4b>(y, x);
                    // if pixel is black
                    if (pixel[0] == 0 && pixel[1] == 0 && pixel[2] == 0)
                    {
                        // set alpha to zero:
                        pixel[3] = 0;
                    }
                }

            std::ostringstream name;
            name << "D:/Sathiya/res/intlayer" << m << ".png";





imwrite(name.str(), input_bgra);
        }

Не уверен, как добиться этого в Android.


person SathiyaKrishnan    schedule 21.06.2017    source источник
comment
Предоставьте это как интерфейс JNI и вызовите этот метод из java. Вы можете преобразовать растровое изображение в Mat в java (используя Utils.bitmapToMat()) и передать собственный адрес интерфейсу JNI. Также не забудьте передать разрешение на запись в манифест.   -  person Udit Mukherjee    schedule 21.06.2017
comment
Привет, попробовал, но столкнулся с ошибкой Ошибка: (252, 63) ошибка: невозможно передать объект нетривиального типа 'cv::Mat' с помощью вариационного метода; вызов будет прерван во время выполнения [-Wnon-pod-varargs]   -  person SathiyaKrishnan    schedule 21.06.2017
comment
jclass clazz = env-›FindClass(com/asianpaints/watershed/hellojni/MainActivity); jmethodID mid = env->GetStaticMethodID(clazz, fromNative, (Ljava/lang/String;)V); jobject obj = env->CallStaticObjectMethod(clazz, mid, input_bgra);   -  person SathiyaKrishnan    schedule 21.06.2017
comment
Создайте мат в java и передайте его адрес в ndk   -  person Udit Mukherjee    schedule 21.06.2017
comment
Не могли бы вы поделиться образцом кода.   -  person SathiyaKrishnan    schedule 22.06.2017


Ответы (1)


Я пытаюсь сохранить сегменты водораздела как png в java, это просто сделать.

person SathiyaKrishnan    schedule 22.06.2017
comment
Я успешно передал свой мат на java. Спасибо Удит. - person SathiyaKrishnan; 22.06.2017
comment
мне очень нужна помощь с этим вопросом, не могли бы вы мне помочь, пожалуйста? stackoverflow.com/ вопросы/61216402/ - person Carlos Diego; 28.04.2020