使用CameraGLSurfaceView以纵向模式显示camera2预览

时间:2019-06-18 11:39:07

标签: android opencv android-camera2 glsurfaceview

我正在尝试在带有Camera2 API和OpenCV的CameraGLSurfaceView的Android AR应用程序中使用OpenCV。在纵向模式下使用该应用程序时,图像仍处于横向模式(旋转90度并拉伸)。在横向模式下使用时,一切正常。

据我了解,问题出在相机始终以横向模式传送帧,而OpenGL部分会干扰视线调整为纵向模式。 因此,我尝试在代码的c ++部分中转置和翻转图像,以及将预览大小调整为纵向,但最终变成半黑并被挤压(参见图像)。

还有解决这个问题的另一种方法吗?

  

有人在使用CameraGLSurfaceView   带camera2的人像模式,对我有帮助吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

实际上,在至少经过一天的尝试之后,我实际上找到了一个对我有用的解决方案,也许在尝试...之前,我应该更多地研究openGL ...

对于其他遇到相同问题的人,可以在OpenCV的CameraGLRenderBase中更改texCoord2D(可以通过侦听旋转变化并相应地调整坐标来扩展它)。对于纵向模式,它对我来说可以设置

private final float texCoord2D[] = { 1, 0, 0, 0, 1, 1, 0, 1 }; 这种方法的优点是您无需翻转OpenCV代码,而且似乎完全不会影响帧速率。