Android - 如何在autoFocus准备好后捕获相机预览帧?

时间:2015-10-27 18:37:56

标签: android android-camera

我想仅在camera.autoFocus(AutoFocusCallback callback)成功时捕获相机预览框。我该怎么做? 有没有办法在onAutoFocus(boolean success, Camera camera)方法中捕获帧? 我想做的是这样的事情:

public void butClick(View v){
    preview.camera.autoFocus(new AutoFocusCallback() {
        public void onAutoFocus(boolean success, Camera camera) {
            if(success){
                //capturing frame...
            }
        }
    });

请注意,我不想拍照,但只是捕获一个帧然后转换为Mat对象,这将由opencv处理。 任何样品都将非常感激。谢谢

}

2 个答案:

答案 0 :(得分:0)

我正在使用android.hardware.camera(已弃用但我的项目需要)来进行帧抓取。为了获取预览帧,您需要将回调连接到相机预览回调。有关详细信息,请参阅Android CameraPreviewCallback

前:

camera.setPreviewCallback(new PreviewCallback() { public void onPreviewFrame(final byte[] data, final Camera camera) { // Process the contents of byte for whatever you need } });

帧由字节[]访问。您需要自己转换它。如果您需要将其解码为可查看的格式,我建议您查看Decode YUV data以获取一些提示。

注意:为每个显示的帧调用此回调。因此,您需要使用camera.stopPreview()或其他逻辑停止预览。由于camera.stopPreview()会阻止相机更新为用户。

处理相机框架数据很难设置,但一旦你使它工作,它的功能强大。 Goodluck如果您需要更多详细信息,请回复。

答案 1 :(得分:0)

你不能抓住"同步一帧相机。但延迟有望很短,框架将成为焦点。从onAutoFocus()回调中,您可以调用camera.setOneShotPreviewCallback()