기존의 Camera API는 카메라를 카메라로 보았다면
Android 5.0이상에서는 카메라는 센서처럼 취급한다.
camera2 api 강좌 : http://myandroidarchive.tistory.com/1
우선 카메라의 화각 계산 공식은 아래 사이트에서 볼 수 있다.
Calculation Field of View : http://www.bobatkins.com/photography/technical/field_of_view.html
이전 코드와 변경사항은 아래 코드가 추가되었다는 점이다.
float horizonalAngle;
float verticalAngle;
private void calculateFOV(CameraManager cManager) {
try {
for (final String cameraId : cManager.getCameraIdList()) {
CameraCharacteristics characteristics = cManager.getCameraCharacteristics(cameraId);
int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING);
if (cOrientation == CameraCharacteristics.LENS_FACING_BACK) {
float[] maxFocus = characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS);
SizeF size = characteristics.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE);
float w = size.getWidth();
float h = size.getHeight();
horizonalAngle = (float) (2*Math.atan(w/(maxFocus[0]*2)));
verticalAngle = (float) (2*Math.atan(h/(maxFocus[0]*2)));
}
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
먼저, LENS_INFO_AVAILABLE_FOCUS_LENGTHS는 카메라가 사용가능한 렌즈의 초점거리를 얻기 위하여 사용하였다.
다음으로 SENSOR_INFO_PHYSICAL_SIZE는 센서의 크기를 불러오기 위해 사용하였다.
이 값을 이용하여 수직, 수평 FOV각도 값을 구할 수 있다.
FOV (rectilinear) = 2 * arctan (frame size/(focal length * 2))
'안드로이드' 카테고리의 다른 글
안드로이드 센서를 이용한 Rotation Vector구하기 (0) | 2016.07.29 |
---|---|
안드로이드 Camera2 캡쳐기능 (1) | 2016.07.13 |
안드로이드 PCM데이터를 비디오에서 가져오기 (0) | 2016.06.16 |
안드로이드 센서를 이용한 방향계산 및 벡터표시 (4) | 2016.06.14 |
안드로이드 6.0 permission 예제 (4) | 2016.06.11 |