gpt4 book ai didi

java - 使用 camera2 api 连续绘制相机框架?

转载 作者:行者123 更新时间:2023-11-30 00:09:09 24 4
gpt4 key购买 nike

我正在尝试使用来自 Google 的 Camera2 API 示例代码在表面 View 上绘制。但是由于某种原因,绘图在相机预览开始后消失了。我真的很困惑为什么会这样。

private void drawonSurfaceView(){
Paint paint = new Paint();
SurfaceHolder surfaceHolder= mOverlay.getHolder();
if(surfaceHolder.getSurface().isValid()) {
Canvas canvas = surfaceHolder.lockCanvas();
//... actual drawing on canvas

paint.setStyle(Paint.Style.FILL);

int x = canvas.getWidth();
int y = canvas.getHeight();


paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
Rect rect = new Rect(50, 50, x-300, y-300);
canvas.drawRect(rect, paint );

surfaceHolder.unlockCanvasAndPost(canvas);
}


}

我已将代码放在 setUpCameraOutputs() 方法中。

最佳答案

没错,您无法锁定预览表面的 Canvas 进行绘图。前段时间,用于相机预览的 SurfaceView 需要特殊设置(参见 What does SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS means? ),但自 API 11 以来,这会自动发生。

您始终可以在相机预览上方的透明 View 上绘图,但这不是推荐的解决方案。更好的是,将 SurfaceTexture 用于您的相机实时流,并在包含该纹理的 2D 虚拟世界中使用 OpenGL 进行绘制。要使您的绘图与相机流同步,您应该隐藏预览纹理并使用与用于提供图像处理算法的相同回调自行绘制相机帧。

关于java - 使用 camera2 api 连续绘制相机框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48473694/

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