如何触发相机自行在特定区域拍照?

问题描述 投票:0回答:1

我的目标是从图像中检测文本并将其放在特定的textview中。问题是检测到的单词的位置在数组中改变。我想要的是相机到达特定区域时自行拍摄照片,因此输出始终相同,我可以将其放在正确的textviews中。有什么想法吗?

我所能做的是拍摄一张照片,将其保存,识别文本并将整个文本放入textview中。但是,我要在特定的textview中显示特定的文本。

fun startRecognizing(v: View) {
    if (imageView.drawable != null) {
        editText.setText("")
        v.isEnabled = false
        val bitmap = (imageView.drawable as BitmapDrawable).bitmap
        val image = FirebaseVisionImage.fromBitmap(bitmap)
        val detector = FirebaseVision.getInstance().onDeviceTextRecognizer

        detector.processImage(image)
            .addOnSuccessListener { firebaseVisionText ->
                v.isEnabled = true
                processResultText(firebaseVisionText)
            }
            .addOnFailureListener {
                v.isEnabled = true
                editText.setText("Failed")
            }
    } else {
        Toast.makeText(this, "Select an Image First", Toast.LENGTH_LONG).show()
    }

}


private fun processResultText(resultText: FirebaseVisionText) {
    if (resultText.textBlocks.size == 0) {
        editText.setText("No Text Found")
        return
    }
    for (blocks in resultText.textBlocks) {
        val blockText = blocks.text
        val stringText  = resultText.textBlocks
        stringText[0]
        editText.append(blockText + "\n")
    }
}

stringText只是让我每次我在寻找可识别的文本的输出时便查看其中的内容。

android kotlin android-camera firebase-mlkit text-recognition
1个回答
0
投票

如果要检测图像中的某些特定区域,则可以根据区域裁剪图像,并将裁剪后的图像发送到ML Kit中。

另一种选择是检测整个图像,但过滤掉不在区域中的文本。每个检测到的文本都有其自己的边界框坐标。

https://firebase.google.com/docs/reference/android/com/google/firebase/ml/vision/text/FirebaseVisionText.TextBlock#getBoundingBox()

© www.soinside.com 2019 - 2024. All rights reserved.