0

我正在使用 Android 的 api 14 Camera Face Detection 在相机检测到的面部上绘制矩形。它适用于大多数设备(Galaxy Nexus、S4、S Note 2)。但在 S3 SGH-T999 和 SGH-I747(Tmobile 和 AT&T 锁定版本)中,返回的 Face.rect 对象超出了 [-1000, 1000] 的正常范围。具体来说,Face.rect.left = -1165(或其他数字 < -1000)。

引用文档[Camera.Face.rect]:“坐标可以小于 -1000 或大于 1000。但至少有一个顶点位于 (-1000, -1000) 和 (1000, 1000) 之间。”

这是我使用的方法[link here]:onFaceDetection(android.hardware.Camera.Face[], android.hardware.Camera)

其他数据:

  • 应用程序设置为仅纵向
  • 应用程序仅使用前置摄像头

我的问题是:

  1. 有没有人遇到过同样的问题?
  2. 这个小于 -1000 的坐标是什么意思?
  3. 如何解决此问题以便在检测到的面部上正确绘制正确的矩形?

我环顾了一个星期,没有发现其他用户提出的这个问题。同样,我的应用程序在这两个设备之外的其他设备上运行良好。

提前致谢。

4

1 回答 1

1

我面临着类似的问题。我发现,通过onFaceDetection回调获得的人脸矩形来自不同安卓手机的不同坐标系。我在三星和 Micromax 中测试了我的应用程序。它遵循 android 文档中的矩形坐标值(即 -1000 到 1000)。

当我在 Sony xperia L 和 Sony xperia M 上测试我的应用程序时,我观察到它不遵循 android 文档中的坐标。相反,它遵循coordinates which has origin (0,0) at right top corner of the screen for portrait模式。

当我据此应用矩阵时,我发现了完美的矩形绘图。这使我对android堆栈进行了更多研究。我相信是android手机的供应商操纵矩形坐标而不是android原始堆栈。

我的问题是有没有办法找出获得的矩形在绘制矩形之前遵循哪个坐标系?

于 2014-03-12T11:36:07.903 回答