Intereting Posts
Канал моста к последовательности Почему модификатор Kotlin «open» несовместим с «данными»? Как я могу скомпилировать код Kotlin для JavaScript для использования в моем веб-приложении LibGDX? Kotlin Kmongo вставить и вернуть вставленный элемент Доступ к Android запрещен при создании Импорт статических методов в Котлин Неразрешенный справочник KClass пытается использовать DBFlow и Kotlin с Android Установите маркер времени выполнения для любого вида с помощью Kotlin Отдельные / несколько телефонных книг для Android Библиотека Kotlin 'classes.jar' имеет неподдерживаемый формат. Обновите библиотеку или плагин TextColor меняется на неправильный Являются ли методы расширения и свойства расширения плохой практикой? Как сделать событие прослушивания нажатия кнопки в Kotlin / JavaScript? Пытается создать простой recyclerView в Kotlin, но адаптер не применяется должным образом Как получить испущенную ценность от первого наблюдаемого

Разделите раму google-vision на два

В моем пользовательском детекторе я хочу разделить изображение из кадра на половинки, обрабатывать их отдельно. Это то, что я получил до сих пор в своем обычном Detector :

 val imageArray = frame?.grayscaleImageData?.array() val upperImageBuffer = ByteBuffer .allocate(imageArray?.size ?: 0) .put(imageArray, 0, imageArray?.size?.div(2) ?: 0) val upperFrame = Frame.Builder(). setImageData(upperImageBuffer, frame?.metadata?.width ?: 0, frame?.metadata?.height?.div(2) ?: 0, frame?.metadata?.format ?: 16). setRotation(frame?.metadata?.rotation ?: 0). build() val lowerFrame... etc val upperDetections = delegateDetector.detect(upperFrame) upperDetections.forEach { key, barcode -> if (barcode is Barcode) results.append(key, barcode) } val lowerDetections = delegateDetector.detect(lowerFrame) etc. 

До сих пор я использую один и тот же детектор для обоих (на самом деле это проверить, буду ли я узнавать больше результатов, чем в целом кадре), как глупо, как кажется, но я оставляю вопрос так, как есть, потому что, возможно, кто-то из будущее должно было бы взять одну часть изображения для обработки одним детектором, а другое – другим).

Тем не менее, проблема в том, что я получаю одинаковые результаты для обеих половинок и фактически такие же, как и в исходном фрейме. Что я делаю неправильно?

    grayscaleImageData из CameraSource также включает цвет, но имеет префикс с оттенком серого. То есть, он отформатирован как YUV, а не только Y-канал (оттенки серого).

    Поэтому вместо использования imageArray.size используйте frame.width * frame.height как размер.