我正在尝试在带有Camera2 API和OpenCV的CameraGLSurfaceView的Android AR应用程序中使用OpenCV。在纵向模式下使用该应用程序时,图像仍处于横向模式(旋转90度并拉伸)。在横向模式下使用时,一切正常。
据我了解,问题出在相机始终以横向模式传送帧,而OpenGL部分会干扰视线调整为纵向模式。 因此,我尝试在代码的c ++部分中转置和翻转图像,以及将预览大小调整为纵向,但最终变成半黑并被挤压(参见图像)。
还有解决这个问题的另一种方法吗?
有人在使用
CameraGLSurfaceView
带camera2的人像模式,对我有帮助吗?
答案 0 :(得分:0)
实际上,在至少经过一天的尝试之后,我实际上找到了一个对我有用的解决方案,也许在尝试...之前,我应该更多地研究openGL ...
对于其他遇到相同问题的人,可以在OpenCV的CameraGLRenderBase中更改texCoord2D(可以通过侦听旋转变化并相应地调整坐标来扩展它)。对于纵向模式,它对我来说可以设置
private final float texCoord2D[] = {
1, 0,
0, 0,
1, 1,
0, 1 };
这种方法的优点是您无需翻转OpenCV代码,而且似乎完全不会影响帧速率。