Camera2常用类说明
文章目录
Camera2 相关类
//CameraDevice类是连接到Android设备的单个摄像头的表示,允许以高帧速率对图像捕获和后处理进行细粒度控制
CameraDevice
//CameraDevice的属性描述,这些属性对于给定的CameraDevice是固定的,可以
// 通过CameraManager#getCameraCharacteristics查询
CameraCharacteristics
//为CameraDevice配置的捕获会话,用于从摄像机捕获图像或对以前同一会话中从摄像机捕获的图像进行再处理
CameraCaptureSession
//从相机设备捕获单个图像所需的不可变的设置和输出包
CaptureRequest
//Semi-immutable容器对于单个捕获请求和相关信息,这个容器的唯一可变特性是是否使用{@code #failRequest}//被标记为“failed”。
RequestHolder
Camera2 相关方法
CameraDevice
//通过向摄像机设备提供Surfacce的目标输出集来创建新的摄像机捕获会话
//outputs 新的Surface集合可用作捕获的图像数据的目标
//callback 用于通知新的捕获会话状态的回调
//handler 应在其上调用callback的处理程序(handler),若为空,则会使用当前线程的 // Looper
createCaptureSession(List<Surface> outputs,
CameraCaptureSession.StateCallback callback, Handler handler)
CameraCaptureSession
//通过这个捕获会话,请求它无休止地重复捕获图像
// @param request 请求无限重复
// @param listener 回调对象,用于在每次请求完成处理时通知。如果为空,则不会为该请求 // 流生成元数据,但仍然会生成图像数据
// @param handler 应在其上调用侦听器listener的处理程序(handler),若为空,则会 // 使用当前线程的Looper
setRepeatingRequest(CaptureRequest request,CaptureCallback listener, Handler handler)
RequestHolder
CameraCharacteristics
//支持的硬件级别是摄像机设备功能的高级描述,将多种功能汇总到一个字段中,由低到高为LEGACY,LIMITED,FULL // LEVEL_3
Integer level = characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
//相机相对于设备屏幕的方向 LENS_FACING_FRONT,LENS_FACING_Back LENS_FACING_EXTERNAL
//LENS_FACING_FRONT相机设备与设备屏幕面向相同的方向 Back 相反,External 方向不固定
Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);
//最大和最小曝光补偿值
Range<Integer> aeRange = characteristics.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE);
//此摄像头设备支持的CaptureRequest#CONTROL_AWB_MODE 的自动白平衡模式列表
int[] awb = characteristics.get(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES);
//此摄像头设备支持的CaptureRequest#SENSOR_EXPOSURE_TIME的图像曝光时间范围
Range<Long> timeRange = characteristics.get(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE);
//此摄像头设备支持CaptureRequest#SENSOR_SENSITIVITY 的感光范围
Range<Integer> senorRange = characteristics.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE);
//自动对焦(AF)程序可以使用的最大计量区域数
int afregionNum = characteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AF);
//自动曝光(AE)程序可以使用的最大计量区域数
int aeregionNum = characteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AE);
//镜头最前面的最短距离,可以进行清晰对焦。如果镜头是固定焦距,则为0
float minFocus = characteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);
//此镜头的超焦距
float maxFocus = mCameraCharacteristics.get(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE);
//画面传感器的面积,单位是像素。 应用了与任何几何畸变校正之后的有源像素相对应的图像传感器的区域。
这是表示传感器的有效区域的大小的矩形(即,实际从场景接收光的区域)在应用了任何几何校正之后并且应被视为
除了原始格式之外的任何图像输出格式的最大像素尺寸
Rect maxZoomrect = characteristics.get(CameraCharacteristics
.SENSOR_INFO_ACTIVE_ARRAY_SIZE);
//全像素阵列的尺寸,可能包括黑色校准像素。图像传感器的全像素阵列的像素数,其中包括{@link CameraCharacteristics#SENSOR_INFO_PHYSICAL_SIZE}区域。这表示此传感器生成的原始缓冲区的完整像素尺寸
Size size = characteristics.get(CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE)
//最大数字缩放 CaptureRequest#SCALER_CROP_REGION 活动区域宽度和裁剪区域宽度,活动区域高度和裁剪 // 区域高度之间的最大比率
Float maxRadio = characteristics.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM);
//此摄像机设备支持的可用流配置;还包括每种格式/大小组合的最小帧持续时间和停顿持续时间
所有相机设备都支持传感器最大分辨率(由CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE 定义)用于JPEG格式。
对于给定的用例,实际支持的最大分辨率可能低于此处列出的内容,具体取决于图像数据的目标Surface。例如,对于录制视频,所选择的视频编码器可能具有最大尺寸限制(例如1080p)小于相机(例如,最大分辨率为3264×2448)可以提供的
StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Camera2相关参数
rationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
### Camera2相关参数