我正在使用firebase ml视觉,从FirebaseVisionText.Block.boundingBox
中可以得到文本的矩形边界-据我了解-我不知道如何在包含我的图像的ImageView上绘制这些矩形,我尝试了不同的方法,但是它们都做了其他事情,因此我创建了一个名为 Custom.kt 的自定义视图:
class Custom : View {
var mRect : ArrayList<Rect> = ArrayList()
constructor(context: Context) : super(context)
private val myPaint: Paint = Paint()
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
myPaint.style = Paint.Style.STROKE
myPaint.color = Color.BLACK
myPaint.strokeWidth = 10f
if(mRect.size == 0) return
for(rec in mRect){
canvas!!.drawRect(rec,myPaint)
}
}
fun setRect(rect : Rect){
mRect.add(rect)
postInvalidate()
}
}
这是我的xml文件 activity_ocrdemo.xml :
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lay"
tools:context=".OCRDemoActivity">
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/img" />
<com.enkaaz.Custom
android:id="@+id/customView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.constraint.ConstraintLayout>
这是我如何通过 OCRDemoActivity.kt 中的参数调用的方法:
detector.detectInImage(image).addOnSuccessListener {
for (block in it.blocks) {
customView.setRect(block.boundingBox!!)
}
}
但是结果就是这个:
矩形显示在设备的右上角: