我想使用camera2 api以圆形形状显示相机预览。我希望以圆形形状显示预览,但我不希望以圆形形状捕获图像。
捕获的图像将是一张脸(后来想要实现面部检测和自动捕获)。我确实看过几个已经问过的问题,但是没有一个问题与新的camera2 api相关,而且大多数人都在谈论用透明圆圈裁剪叠加图像。但是,这在我需要自动检测面部的情况下不起作用(因为面部可能出现在裁剪的圆形图像的外侧)。
有什么办法可以实现吗?我确实尝试了一个使用TextureView的示例并将其设置为具有固定宽度和高度的LinearLayout,但预览看起来有点挤压并呈方形。
答案 0 :(得分:3)
我不明白为什么面部检测在这里很重要 - 如果您启用了相机API的面部检测器,无论您在圆圈内绘制它是什么,它都会在整个图像上运行
您可以在正确形状的TextureView或SurfaceView上使用圆形叠加,也可以使用相机预览作为EGL纹理进行自己的圆形OpenGL渲染。
后者你可能想要一个用于OpenGL绘图上下文的GLSurfaceView,以及一个SurfaceTexture来发送相机数据并将其作为EGL纹理公开。
拍摄的JPEG仍然是全视野,而相机API对圆形预览图纸一无所知,因此人脸检测和其他所有内容都可以在整个视野范围内工作。