我正在编写一个需要Firebase ml套件读取文本的应用程序(FirebaseVisionImage),并且我正在使用此Google Firebase Page作为说明。
但是我在使用MediaStore.actION_IMAGE_CAPTURE
意图时遇到了问题。当我运行该应用程序时,拍张照片,然后尝试处理图像,我通常从文本识别器获取null。我认为这是由于未提供方向信息,还是在Android上actION_IMAGE_CAPTURE仅使用缩略图?
当它(确实)起作用(不返回null)时,文本识别器不会识别任何文本,而是可能仅返回几个字符。可能值得注意的是,我已经在iOS上开发了该应用程序的原型,并且运行良好。我可以避免的是,这是在两个平台之间捕获并返回图像的方式。在iOS上,我调用一个函数来获取图像方向并将其解析为FirebaseVision函数。
该文档还在其某些示例中使用了CameraX,但是由于它仍处于开发的Alpha阶段,因此我没有使用它。
我错过了什么吗?我如何获得方向?
private fun openCamera() {
val values = Contentvalues()
values.put(MediaStore.Images.Media.TITLE,R.string.app_name)
values.put(MediaStore.Images.Media.DESCRIPTION,"Capturing Photo!")
image_uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values)
//camera intent
val cameraIntent = Intent(MediaStore.actION_IMAGE_CAPTURE)
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,image_uri)
startactivityForResult(cameraIntent,IMAGE_CAPTURE_CODE)
}
override fun onactivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
super.onactivityResult(requestCode,resultCode,data)
if(resultCode == activity.RESULT_OK) {
//process captured image
//image_uri
Log.d(TAG,"$image_uri")
val bmp = MediaStore.Images.Media.getBitmap(contentResolver,image_uri)
val image = FirebaseVisionImage.fromBitmap(bmp)
val detector = FirebaseVision.getInstance().onDeviceTextRecognizer
val result = detector.processImage(image)
.addOnSuccessListener { firebaseVisionText ->
// Task completed successfully
// ...
Log.d(TAG,"Process complete -> ${firebaseVisionText.text}")
val resultText = firebaseVisionText.text
Log.d(TAG,"$resultText")
}
.addOnFailureListener { e ->
Log.d(TAG,"Process failed $e")
}
} else {
Log.d(TAG,"onactivityResult -> resultCode: $resultCode")
}
}