Android的CameraInfo.orientation是否正确记录?错误地实施了?

Sea*_*wen 24 camera android orientation

在Android中,您可以Camera通过检索a来获取a 的属性的描述CameraInfo.我对方向很感兴趣,如http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html#orientation所述.

然而,文档似乎与我的所有四个设备的行为方式不一致,而且,我有第五个设备的消息,这个设备看起来固定不变.

特别是,文档说:

该值是摄像机图像需要顺时针旋转的角度,因此它在显示屏上以其自然方向正确显示....例如,假设设备具有自然高的屏幕.后置摄像头传感器安装在横向上.你在看屏幕.如果相机传感器的顶部以自然方向与屏幕的右边缘对齐,则值应为90.如果前置摄像头传感器的顶部与屏幕右侧对齐,则值应为是270.

但在所述示例中,相机图像相对于自然高的方向顺时针旋转90度,而不是相反.也就是说,顶部与设备右侧对齐的图像需要顺时针旋转270度才能与设备的顶部对齐.

至少,我的所有四个设备都会为此值报告"90",并且当保持在自然方向时,所有设备的行为都好像相机的顶部是设备的右侧.也就是说,图像必须顺时针旋转270度,而不是90度,以匹配自然方向.这个例子似乎是对的; 第一行没有.

这个示例代码似乎支持我的结论,因为它只在方向被解释为上面时才给出正确的结果.

奇怪的是,我有来自一个用户设备的记录证据,显示它有时报告该值为90,其他时间报告为0!它应该是相机如何坐在设备中的物理属性,对吧?

  1. 任何人都可以确认文档的第一行实际上是错误的,这个例子是对的吗?
  2. 有没有人观察到价值的变化CameraInfo.orientation?在文档中是否有证据证明这是合法行为,或者它可能是设备中的错误?
  3. 任何其他相关的评论,经验,陷阱我还没有遇到过?

Sea*_*wen 11

我相信在经过一番思考之后,我已经回答了我自己的问题.

这个例子是正确的.而且,文本实际上是正确的.在给出的例子中,如果被显示在屏幕上的预览数据时,它会出现旋转90度计数器 -clockwise,由于"上升"中的数据是在显示的右手,并且它显示在显示屏上,其"向上"可以说是数据的左手.因此,有必要通过在显示之前将图像数据顺时针旋转90度来进行补偿.

我认为将这个数字理解为相机相对于自然方向安装的旋转更为自然.

出于这个原因和其他原因,我得出的结论是,显示方向变化值的设备只是错误的.至少,当它报告0时,其数据表现得像"90"是正确的值.

  • 感谢你跟进你的解释(+1) - 我几天前读完你的问题之后试图绕过这个问题,但实际上在我头脑中绕着彼此旋转所有这些几何形状时感觉睡着了;) (2认同)

Ste*_*pel 11

1)任何人都可以确认文档的第一行实际上是错误的,这个例子是对的吗?

您已经在答案中彻底解决了这个问题,感谢您的后续解释!

2)有没有人观察到CameraInfo.orientation的变化值?在文档中是否有证据证明这是合法行为,或者它可能是设备中的错误?

虽然我很容易想象这是一个原则上的错误,但它仍然是一个非常严重的影响各种成像相关的应用程序,因为结果信息通过EXIF嵌入照片中(例如其他EXIF相关的错误暂时搁置).

因此,我认为它更有可能成为那些成千上万的Android设备之一的实际功能,即可以选择物理旋转镜头的相机.虽然我目前还不知道基于Android的手机,但过去常常有这样的手机,例如LG VX7000(~2004)或三星SCH-a930(~2006)(参见手册中的旋转相机镜头 ),所以如果像这样的东西出现在Android领域,我也不会感到惊讶.

顺便提一句,有一个悬而未决的问题为什么我的照片颠倒或倒退.客户问题解答三星SCH-A930对于后者:

最近我的照片一直颠倒或倒退.为什么会发生这种情况,我该如何解决它.

这实际上可能是其他功能旋转调整硬件/固件中的错误;)

总而言之,我认为最好准备好能够改变的方向,直到你有更明确的证据证明这是一个有缺陷的设备.