Abh*_*iri 5 androidx android-camerax
我有一个 PreviewView 实例,我想使用 Firebase 和图像分析器用例根据对象标识在其上绘制一个矩形。
然而,与 Text/SurfaceView 不同,PreviewView 不允许在其上绘制任何 Canvas。
还有什么选择呢?
进一步编辑:
之前尝试过以下方法:
Canvas objectFrameCanvas = new Canvas();
Paint pen = new Paint();
pen.setColor(Color.RED);
pen.setStrokeWidth(8F);
pen.setStyle(Paint.Style.STROKE);
objectFrameCanvas.drawRect(100,150,200, 250, pen);
TextureView textureView = new TextureView(this);
textureView.draw(objectFrameCanvas);
mPreviewView.addView(textureView);
Run Code Online (Sandbox Code Playgroud)
为视图组创建一个子视图:textureView。创建新的画布对象FrameCanvas,在其上绘制矩形,然后在textureView上绘制画布。然后将其添加到视图组(PreviewView)
仍然没有给我应有的必要结果。
顺便说一句,我在我的 ImageAnanysis 用例中使用了它
imageAnalysis.setAnalyzer(executor, new ImageAnalysis.Analyzer() {....}
Run Code Online (Sandbox Code Playgroud)
要在预览顶部进行绘制,您可以创建一个自定义视图,该视图会根据RectF您提供的列表绘制一个矩形。这是它的要点:
class RectOverlay constructor(context: Context?, attributeSet: AttributeSet?) :
View(context, attributeSet) {
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
// Pass it a list of RectF (rectBounds)
rectBounds.forEach { canvas.drawRect(it, paint) }
}
}
Run Code Online (Sandbox Code Playgroud)
并在布局中使用此自定义视图:
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.camera.view.PreviewView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.example.RectOverlay
android:id="@+id/rect_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
这是一个很好的存储库,可以检查哪个使用 CameraX 并在检测到的面部上绘制矩形边界:https://github.com/husaynhakeem/android-playground/tree/master/FaceDetectorSample
| 归档时间: |
|
| 查看次数: |
5743 次 |
| 最近记录: |