代码之家  ›  专栏  ›  技术社区  ›  alex

Android OpenGL camera2纹理分辨率

  •  2
  • alex  · 技术社区  · 7 年前

    简介

    我正在使用 CaptureRequest.Builder 并提供两个曲面作为目标:a SurfaceTexture 用于绘制GL和an ImageReader ( getSurface() )用于处理框架。

    我通过设置 surfaceTexture.setDefaultBufferSize 通过创建 ImageReader.newInstance .

    问题所在

    看来 表面结构 OpenGL纹理得到的图像的纵横比不同于640x480(4:3),更像2560x1440(16:9)( 表面结构 占据全屏,请参阅 IMG 3 ). 需要注意的是,两款手机的分辨率纵横比相同 16:9 . (有意保留与侧面的纹理偏移)。

    下面您可以看到 IMG 1 显示在监视器屏幕上,以及 IMG 2 IMG 3 是当前活动视图显示摄像头预览的手机屏幕截图。

    问题是

    如何正确施力 表面结构 GLSurfaceView.Renderer 要从相机获取特定(本例中为4:3)纵横比纹理图像,以获得任意大小的视图?

    相关的

    必须注意的是 an app 解决了这个问题 they change the view size 与所需的纵横比相对应。

    另请参见 :

    IMG 1 -显示的源图像: enter image description here

    IMG 2 -良好的纵横比( Google Nexus 5 -Android 6.0.1): enter image description here

    IMG 3 -纹理纵横比不好( LG-D855 -Android 5.0) enter image description here

    1 回复  |  直到 7 年前
        1
  •  0
  •   alex    7 年前

    通过将LG phone更新为Android 6.0,“修复”了该问题。