기기의 카메라에 대한 FOV를 가져 오거나 계산하려고합니다 (하단의 camera2
API 코드 참조). 주어진 센서 크기가 3.2mm로 2.4mm X (SENSOR_INFO_PHYSICAL_SIZE
사용)된다센서 크기에 대한 Android camera2 CameraCharacteristics API의 안정성은 어느 정도입니까?
- : 갤럭시 S7 내 시도
.
- 이 경우, 계산 된 HFOV는 41.7 ° (초점 거리는 4.2mm)로 실험을 통해 틀린 것으로 입증되었습니다.
- 다양한 스펙 문서에 언급 1/2.5 "센서 크기 (wikipedia에 따라 5.76mm X 4.29mm) -. 내 실험에 가까운
CameraCharacteristics
의 값이 다르게 보일, 68.9 °의 나에게 HFOV를 줄 것이다. 삼성 갤럭시 A3-2016에
같은 쿼리와 실험이 더 결정적, 계산 된 HFOV은 실험 하나와 일치하는 것 같다.
이 CameraCharacteristics
측정 값의 신뢰성에 대해 공유하는 사람의 경험이나 데이터가?
코드는 여기 Scanbot의 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
아니요, 절대 검색하지 않음 –