我是一名Android新手,正在尝试做以下事情:
- 从摄像头中流式传输原始数据(图像格式RAW_SENSOR) - 处理原始数据 - 交互式显示处理结果
似乎只有在静态捕获模式下才能捕获原始数据,这是正确的吗?
如果是这样,是否可以执行重复的CaptureRequests以获取RAW图像?使用13MP传感器可以期望什么性能?有参考代码吗?
非常感谢。
编辑:
到目前为止,我已经完成了以下工作:
- 创建预览捕获,该捕获渲染到SurfaceTexture上 - 帧速率在onSurfaceTextureUpdated()中计算/更新 - 问题:
- 在onSurfaceTextureUpdated()中计算帧速率是否有效? - 我尝试将不同的尺寸设置为texture.setDefaultBufferSize(),但对帧速率没有影响。这是正常现象吗?
- 将raw ImageReader的surface添加到cameraDevice.createCaptureSession() - 将回调添加到cameraCaptureSessions.setRepeatingRequest() - 在回调的onCaptureCompleted()中,每N帧添加一个captureRawImage()调用。 - captureRawImage()创建一个静态图像捕获。 - 为原始ImageReader添加setOnImageAvailableListener()以对原始图像执行有用的操作。
原始分辨率为4208x3120
最小帧持续时间为33ms
停顿时间为200ms
只有预览时,我获得的帧率约为25-30 fps。
当我预览并启用每一帧的原始捕获时,获得的帧率约为15 fps。
即使我每100帧执行一次raw capture,我也会得到一些“ImageReader_JNI:无法获取缓冲区项,非常可能是客户端尝试获取多个maxImages缓冲区”的消息。
希望能得到以下问题的反馈:
- 这样做是否正确? - 如果使用连拍而不是每N帧进行静态图像,是否更有效? - 这些初始数字是否有意义?
非常感谢。
- 从摄像头中流式传输原始数据(图像格式RAW_SENSOR) - 处理原始数据 - 交互式显示处理结果
似乎只有在静态捕获模式下才能捕获原始数据,这是正确的吗?
如果是这样,是否可以执行重复的CaptureRequests以获取RAW图像?使用13MP传感器可以期望什么性能?有参考代码吗?
非常感谢。
编辑:
到目前为止,我已经完成了以下工作:
- 创建预览捕获,该捕获渲染到SurfaceTexture上 - 帧速率在onSurfaceTextureUpdated()中计算/更新 - 问题:
- 在onSurfaceTextureUpdated()中计算帧速率是否有效? - 我尝试将不同的尺寸设置为texture.setDefaultBufferSize(),但对帧速率没有影响。这是正常现象吗?
- 将raw ImageReader的surface添加到cameraDevice.createCaptureSession() - 将回调添加到cameraCaptureSessions.setRepeatingRequest() - 在回调的onCaptureCompleted()中,每N帧添加一个captureRawImage()调用。 - captureRawImage()创建一个静态图像捕获。 - 为原始ImageReader添加setOnImageAvailableListener()以对原始图像执行有用的操作。
原始分辨率为4208x3120
最小帧持续时间为33ms
停顿时间为200ms
只有预览时,我获得的帧率约为25-30 fps。
当我预览并启用每一帧的原始捕获时,获得的帧率约为15 fps。
即使我每100帧执行一次raw capture,我也会得到一些“ImageReader_JNI:无法获取缓冲区项,非常可能是客户端尝试获取多个maxImages缓冲区”的消息。
希望能得到以下问题的反馈:
- 这样做是否正确? - 如果使用连拍而不是每N帧进行静态图像,是否更有效? - 这些初始数字是否有意义?
非常感谢。