gpt4 book ai didi

androidx - 如何在 PreviewView 上绘图?

转载 作者:行者123 更新时间:2023-12-04 01:17:36 27 4
gpt4 key购买 nike

我有一个 PreviewView 实例,我想根据使用 Firebase 和 Image Analyzer 用例的对象标识在该实例上绘制一个矩形。
但是,与 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);
创建一个 subview 组:textureView。
创建新的 Canvas objectFrameCanvas,在其上绘制矩形,然后在 textureView 上绘制 Canvas 。然后将此添加到查看组(PreviewView)
仍然没有给我它应该的必要结果。
顺便说一句,我在我的 ImageAnanysis 用例中使用了它
imageAnalysis.setAnalyzer(executor, new ImageAnalysis.Analyzer() {....}

最佳答案

要在预览之上绘制,您可以创建一个自定义 View ,该 View 绘制一个带有 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) }
}
}
并在您的布局中使用此自定义 View :
<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>
这是一个很好的 repo 来检查哪个使用 CameraX 并在检测到的面部上绘制矩形边界: https://github.com/husaynhakeem/android-playground/tree/master/FaceDetectorSample

关于androidx - 如何在 PreviewView 上绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63090795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com