4
我試圖使用camera2
API我的代碼在底部得到/計算設備相機的視野)。Android camera2傳感器尺寸的CameraCharacteristics API的可靠性如何?
在我上的銀河S7嘗試:
- 給定的傳感器尺寸被3.2毫米X2.4毫米(使用
SENSOR_INFO_PHYSICAL_SIZE
)。 - 在這種情況下,我的計算HFOV是41.7°(給出的焦距是4.2mm),我通過實驗證明是錯誤的。
- 各種規格文檔提及了1/2.5" 傳感器尺寸(5.76毫米X根據wikipedia4.29毫米) - 這將給我一個HFOV的68.9°,更接近我實驗
- 在
CameraCharacteristics
的值似乎錯誤。
在三星Galaxy A3-2016相同的查詢和實驗是更確鑿的,計算出HFOV似乎相匹配的實驗之一。
有沒有人的經驗或數據共享有關的CameraCharacteristics
讀數的可靠性?
的代碼,我習慣了這裏查詢CameraCharacteristics
::
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraID);
if (characteristics.get(CameraCharacteristics.LENS_FACING) == CameraCharacteristics.LENS_FACING_FRONT)
continue;
int support = characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY)
Log.d("mr", "Camera " + cameraID + " has LEGACY Camera2 support");
else if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED)
Log.d("mr", "Camera " + cameraID + " has LIMITED Camera2 support");
else if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_FULL)
Log.d("mr", "Camera " + cameraID + " has FULL Camera2 support");
else
Log.d("mr", "Camera " + cameraID + " has unknown Camera2 support?!");
// voir http://myandroidarchive.tistory.com/5 pour le query android
// voir http://paulbourke.net/miscellaneous/lens/ pour les maths
// include every focal length supported by the camera device, in ascending order.
float[] focalLengths = characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS);
SizeF sensorSize = characteristics.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE);
float w = 0.5f * sensorSize.getWidth();
float h = 0.5f * sensorSize.getHeight();
Log.d("mr", "Camera " + cameraID + " has sensorSize == " + Float.toString(2.0f*w) + ", " + Float.toString(2.0f*h));
for (int focusId=0; focusId<focalLengths.length; focusId++) {
float focalLength = focalLengths[focusId];
float horizonalAngle = (float) Math.toDegrees(2 * Math.atan(w/focalLength));
float verticalAngle = (float) Math.toDegrees(2 * Math.atan(h/focalLength));
Log.d("mr", "Camera " + cameraID + "/f" + focusId + " has focalLength == " + Float.toString(focalLength));
Log.d("mr", " * horizonalAngle == " + Float.toString(horizonalAngle));
Log.d("mr", " * verticalAngle == " + Float.toString(verticalAngle));
}
感謝您的反饋,您是否碰巧知道一個簡單的應用程序,可顯示設備的所有CameraCharacteristics值? – rotoglup
不,從未搜索過 –