Я пытаюсь выполнить пользовательскую обработку кадров, чтобы создать приложение для распознавания текста ML-Kit.Сначала я использовал FotoApparat для создания простого приложения для камеры.
Затем я добавил пользовательскую анонимную функцию обработки кадров в m инициализации FotoApparat.
private fun createFotoapparat(){
val cameraView = findViewById<CameraView>(R.id.camera_view)
fotoapparat = Fotoapparat
.with(this)
.into(cameraView)
.previewScaleType(ScaleType.CenterCrop)
.lensPosition(back())
.logger(loggers(logcat()))
.cameraErrorCallback({error -> println("Recorder errors: $error")})
.frameProcessor { frame ->
Log.d("Frameprocessor", "Fired")
val rotation = getRotationCompensation("0", this, baseContext)
val BAimage = frame.image
val metadata = FirebaseVisionImageMetadata.Builder()
.setWidth(480) // 480x360 is typically sufficient for
.setHeight(360) // image recognition
.setFormat(FirebaseVisionImageMetadata.IMAGE_FORMAT_NV21)
.setRotation(rotation)
.build()
var FBimage = FirebaseVisionImage.fromByteArray(BAimage, metadata)
val detector = FirebaseVision.getInstance()
.onDeviceTextRecognizer
val result = detector.processImage(FBimage)
.addOnSuccessListener { firebaseVisionText ->
Log.d("OnSuccess", "Triggered")
for (block in firebaseVisionText.textBlocks){
val blockText = block.text
val blockConfidence = block.confidence
Log.d("newframe", blockText)
Log.d(blockText, blockConfidence.toString())
}
}
.addOnFailureListener {
Log.e("err", "line 114", it)
}
}.build()
}
Моя проблема в том, что он возвращает глупость снулевое значение для уверенности.Вот некоторые из выводов logcat, когда он смотрит на простое изображение с небольшим количеством напечатанного текста.
2019-03-01 14:24:56.735 16117-16117/me.paxana.myapplication D/newframe: 111
2019-03-01 14:24:56.735 16117-16117/me.paxana.myapplication D/111: null
Я могу опубликовать больше кода или больше logcat по мере необходимости, но я чувствуюкак будто я упускаю что-то важное здесь.