[TFLite] 7(1). Camera2 API

less than 1 minute read


Camera2 API

카메라 API를 이용하면 실시간으로 이미지를 얻을 수 있습니다. 이 이미지를 실시간으로 얻고 딥러닝 모델로 추론까지 수행해 봅니다.

실시간으로 이미지를 처리해야 하기 때문에 안드로이드 기기의 컴퓨팅 자원을 최대한 활용할 수 있도록 최적화하는 것이 중요합니다.

실시간 이미지 처리를 통해 카메라 API 활용법, 카메라 이미지 크기 최적화, 비동기 처리 등의 지식을 얻을 수 있습니다.


Camera2 API의 개요


Android 5.0 버전 부터는 android.hardware.camera2 API를 사용합니다.

Camera2 API는 이전 Camera API에서 이미지를 요청하고 겨로가를 전달받는 프로세스 상의 차이와 함께 세밀한 컨트롤 제공, 캡처 결과 피드백, 처리율 향상, 동기화된 파이프라이닝 적용 등의 개선을 이루었습니다.

image-20210819232329686


아래 그림은 카메라를 사용하는 앱에서 Camera2 API를 사용하는 프로세스를 상세하게 나타낸 것입니다. CameraManager, CameraDevice, CameraCaptureSession 등의 Camera2 API가 제공하는 주요 클래스가 CameraCharacteristices, CaptureRequest, CameraCaptureSession, CaptureCallback 등 주변 클래스와 어떻게 상호 작용하는 지를 파악할 수 있습니다.

image-20210819232210753


클래스 간 이미지를 처리하는 흐름을 간략히 나타내면 아래 그림과 같습니다. 카메라를 사용할 앱은 먼저 액티비티에서 CameraManager를 획득하고, CameraManager에서 CameraCharacteristices를 얻어 카메라 관련 정보를 알 수 있습니다.

또한 CameraManager의 openCamera() 함수로 카메라와 연결하고 연결된 카메라의 CameraDevice 인스턴스를 얻을 수 있습니다. CameraDevice는 CaptureRequest를 생성하여 캡처와 관련된 요청 사항을 설정하고, createCaptureSession() 함수로 이미지를 받아올 CameraCaptureSession을 생성합니다. 세션의 열리면 캡처를 시작하도록 세션에 요청하고 요청 결과를 반환합니다.

image-20210819232927224



Categories:

Updated:

Leave a comment