以圆形显示相机预览
Display camera preview in a circle
我想使用 camera2 api 以圆形显示相机预览。我想以圆形显示预览,但我不希望以圆形捕获图像。
抓拍到的图片是人脸(以后想实现人脸检测和自动抓拍)。我确实看过一些已经问过的问题,但其中 none 个问题与新的 camera2 api 相关,而且大多数问题都是关于用透明圆圈裁剪覆盖图像。但这在我需要自动检测人脸的情况下不起作用(因为人脸可能出现在裁剪后的圆形图像之外)。
有什么办法可以实现吗?我确实尝试了一个带有 TextureView 的示例并将其设置为具有固定宽度和高度的 LinearLayout,但预览看起来有点挤压并且呈方形。
我不明白为什么面部检测在这里很重要 - 如果您启用相机 API 的面部检测器,无论您在绘图中做什么,它都会 运行 在完整图像上它在一个圆圈内。
您可以在形状正确的 TextureView 或 SurfaceView 上使用圆形叠加层,或者使用相机预览作为 EGL 纹理对圆形进行您自己的 OpenGL 渲染。
后者您可能需要一个 GLSurfaceView 用于 OpenGL 绘图上下文,一个 SurfaceTexture 用于将相机数据发送到并将其公开为 EGL 纹理。
捕获的 JPEG 仍将是全视野,相机 API 对您的圆形预览图一无所知,因此人脸检测和其他一切都将在全视野下工作。
我想使用 camera2 api 以圆形显示相机预览。我想以圆形显示预览,但我不希望以圆形捕获图像。
抓拍到的图片是人脸(以后想实现人脸检测和自动抓拍)。我确实看过一些已经问过的问题,但其中 none 个问题与新的 camera2 api 相关,而且大多数问题都是关于用透明圆圈裁剪覆盖图像。但这在我需要自动检测人脸的情况下不起作用(因为人脸可能出现在裁剪后的圆形图像之外)。
有什么办法可以实现吗?我确实尝试了一个带有 TextureView 的示例并将其设置为具有固定宽度和高度的 LinearLayout,但预览看起来有点挤压并且呈方形。
我不明白为什么面部检测在这里很重要 - 如果您启用相机 API 的面部检测器,无论您在绘图中做什么,它都会 运行 在完整图像上它在一个圆圈内。
您可以在形状正确的 TextureView 或 SurfaceView 上使用圆形叠加层,或者使用相机预览作为 EGL 纹理对圆形进行您自己的 OpenGL 渲染。
后者您可能需要一个 GLSurfaceView 用于 OpenGL 绘图上下文,一个 SurfaceTexture 用于将相机数据发送到并将其公开为 EGL 纹理。
捕获的 JPEG 仍将是全视野,相机 API 对您的圆形预览图一无所知,因此人脸检测和其他一切都将在全视野下工作。