У меня есть сервер обработки изображений, и я пытаюсь выполнить следующее:
logger info "calling detect"
// read from file, pretty fast
val bytes = new FileInputStream(frame getPath) readAllBytes()
// I can tell because this line executes immediately
logger info (s"the image was read as ${bytes length}")
// also trivial
val imageMat = new Mat(frame.width, frame.height, 1)
logger info "constructed empty matrix..."
// this takes a long time, as I cannot see the log line that follows
imageMat put (0, 0, bytes)
logger info s"read image as matrix: ${imageMat dump()}"
Этот фрагмент загружает изображение (.bgr888) из массива байтов, создает пустую матрицу с шириной/длиной изображения (которую я получил из запроса gRPC), затем заполняет матрицу значениями байтовый массив. Только этот последний шаг занимает вечность.
Я попытался обернуть массив байтов как ByteBuffer и передать его непосредственно в конструктор матрицы, но это нарушило некоторое утверждение C++ о том, что данные равны 0 или null, что странно для меня, поскольку очевидно, что данные не являются ни тем, ни другим, но я не являюсь Разработчик C++, так что не понимаю, что с этим происходит.
Вы можете добавить код, который вы пробовали, используя ByteBuffer?