Как конвертировать byte [] в Mat в Java - PullRequest
0 голосов
/ 16 мая 2018

Я работаю над DJI Mobile SDK в студии Android.Я хочу применить фильтры Opencv к видео в прямом эфире с камеры фантомного беспилотника.Прямая трансляция видео находится в байте [] videoBuffer, как показано в коде.

mReceivedVideoDataCallBack = new VideoFeeder.VideoDataCallback() {
        @Override
        public void onReceive(byte[] videoBuffer, int size) {
            if (mCodecManager != null) {
                mCodecManager.sendDataToDecoder(videoBuffer, size);
            }
        }
    }; 

Один из способов, который я считаю, - сначала преобразовать byte [] videoBuffer в Mat в Java, а затем передать адрес Mat во внешний класс C.

Второй - передать byte [] videoBuffer в extern C как jbyteArray, а затем преобразовать этот jbyteArray в Mat в C.

Я не знаю роли размера int в коде.

Я столкнулся с проблемой в обоих.Любая помощь будет оценена.Я застрял на этом дерьме больше месяца.:(

1 Ответ

0 голосов
/ 17 мая 2018

videoBuffer может содержать недопустимые байты, поэтому нам нужно использовать 'size', чтобы указать действительную часть, что означает, что действительные байты начинаются с videoBuffer [0] и заканчиваются последним байтом: videoBuffer [size-1]

...