【发布时间】:2019-06-22 08:56:28
【问题描述】:
我正在尝试找出将 camera2 与具有硬件级别支持 LEGACY 的设备一起使用的限制。来自official docs for android camera2 api:
LEGACY:这些设备通过 Camera API2 接口向应用公开功能,这些功能与通过 Camera API1 接口向应用公开的功能大致相同。遗留框架代码在概念上将 Camera API2 调用转换为 Camera API1 调用;旧设备不支持相机 API2 功能,例如每帧控件。
我发现这是错误的...实际上我希望通过Camera.CameraInfo camInfo -> camInfo.orientation (docs) 获得的传感器方向与cameraCharacteristics.get(CameraCharacteristics.SENSOR_ORIENTATION) (docs) 相同
然而事实并非如此!
- Camera API 1 返回 90° 的方向角
- Camera API 2 返回 270° 的方向角
请注意,这是完全不同的!横向!=反向横向!例如,它将完全破坏从屏幕预览坐标到相机传感器空间的矩阵变换。
我错过了什么吗?这是预期的行为吗? 我正在使用带有 Android 8.1 的小米 Redmi 5 plus(这是制造商的问题吗?)
谢谢
【问题讨论】:
-
确保比较同一相机的答案。难道你问前置摄像头的camera2特性,而Camera.CameraInfo适用于后置摄像头?另外,我很想知道 90° 或 270° 哪个值是正确的(我的意思是,这 answer 是否产生正确的结果? ).
-
感谢您的评论,我想问一下这两种情况下后置摄像头的特性(您认为制造商可以根据前置或后置摄像头采用不同的传感器方向吗?当然可以,但对于现在我没有遇到这种情况)无论如何正确的答案是 90° 但我开始怀疑 camera2 是否告诉旋转应用在相机传感器空间中,而 camera1 告诉旋转应用在显示坐标空间中(即使文档声明它应该是从显示坐标转换为相机坐标的旋转)