首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SurfaceTexture中渲染时,谁会从摄像机中旋转画面?

在SurfaceTexture中渲染时,谁会从摄像机中旋转画面?
EN

Stack Overflow用户
提问于 2017-05-28 10:21:51
回答 2查看 953关注 0票数 1

更新:问题是关于Camera2的

当相机预览在SurfaceTexture上绘制时,我试图找出谁应用旋转变换。

当从相机请求预览尺寸时,你总是会得到宽度大于高度的对子(因为在拍摄照片时,风景是通常的方向)。

当使用设备的纵向模式和设置预览大小(前)。1600 x1200)相机上的帧是正确旋转的,但我找不出它是在哪里完成的,这是CameraDevice根据曲面类型自动完成的吗?或者是SurfaceTexture在旋转图像?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-29 01:09:22

答案在一定程度上取决于您使用的是哪个相机API;既然您提到了CameraDevice,我想您是指camera2。

在camera2中,目标之一是在可能的情况下简化旋转处理;因此,如果您将预览绘制到SurfaceView中,则相机服务和硬件排序器/ GPU将配合并处理所有的旋转操作。您总是从传感器请求景观分辨率(它与传感器的长边缘对齐,与设备的长边沿相匹配),您只需确保SurfaceView的纵横比与请求的分辨率匹配(因此在纵向上,需要9:16 View才能正确显示1080 p;在景致中,您需要16:9视图)。

对于TextureView,以及使用SurfaceTexture进行完全自定义GL绘图,API不能为您完成所有这些工作。该表面结构的转换是由摄像头API设置的,以将相机输出旋转到设备的本机方向(通常用于手机,某些平板电脑的外观),但如果应用程序的UI不在本机方向,则无法处理额外的旋转。

在这种情况下,您需要从SurfaceTexure获取转换矩阵,应用额外的旋转来匹配应用程序UI,并将其设置为TextureView矩阵。

票数 2
EN

Stack Overflow用户

发布于 2017-05-28 23:15:36

自从我开始拍摄相机已经有一年了,所以我为缺乏细节而道歉。但我确实记得,显示相机预览的关键是计算正确的变换矩阵,以应用于SurfaceView (或TextureView),以应用所需的任何缩放或旋转。所以,关于“谁在做旋转”,我想你可以说这是视图,按照你提供的转换的指示。因此,矩阵将基于您请求的预览分辨率的关系(从您的设备所能提供的功能列表中)与视图的实际布局尺寸相比较,再加上设备传感器的物理方向与设备屏幕的当前方向相比较。

在旧的摄像头API中,Camera.CameraInfo有一个定位字段,用于提供安装传感器的物理方向。对于大多数手机上安装的感应器来说,它通常是90,但你也会在那里找到大约270(实际上是“颠倒”)。0和180可能存在,但我从未见过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44226206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档