[英]How to get the frame using camera2 api
我正在使用camera2 api獲取相機框架,這是我編寫的代碼
private void startPreview() {
SurfaceTexture surfaceTexture = mTextureView.getSurfaceTexture();
surfaceTexture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
Surface previewSurface = new Surface(surfaceTexture);
try {
mCaptureRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mCaptureRequestBuilder.addTarget(previewSurface);
mCameraDevice.createCaptureSession(Arrays.asList(previewSurface),
new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession session) {
try {
session.setRepeatingRequest(mCaptureRequestBuilder.build(),
new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
super.onCaptureCompleted(session, request, result);
Log.i("State preview", "process: frame");
}
}, mBackgoundThreadHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession session) {
Toast.makeText(getApplicationContext(),
"Unable to setup camera preview", Toast.LENGTH_SHORT).show();
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
我可以通過以下行看到框架日志:
session.setRepeatingRequest(mCaptureRequestBuilder.build(),
new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
super.onCaptureCompleted(session, request, result);
Log.i("State preview", "process: frame");
}
}, mBackgoundThreadHandler);
因此,如何通過此功能獲取框架。 我是Camera2 API的新手,所以有人可以幫助我。
您的代碼當前僅將相機預覽繪制到TextureView上; 如果您希望應用程序代碼可以讀取第二個輸出,則需要創建第二個輸出並將其提供給相機。
根據要執行的處理類型,您需要使用ImageReader進行Java級訪問,使用SurfaceTexture (用於OpenGL讀取)或分配 (用於RenderScript)。 從以上每一個中,您都可以將Surface包含在會話創建和創建捕獲請求中。
它們每個都有一個回調,當有新框架可用時將觸發該回調。 onCaptureCompleted僅提供捕獲元數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.