Glass XE16.11上的Glitch Open CV相机预览

时间:2014-04-28 08:43:13

标签: android opencv google-glass

我尝试通过添加一个名为JView的新类来覆盖JavaCV的initializeCamera来实现this解决方案。我正在尝试使用此覆盖功能来进行相机参数设置。但是,我发现这个覆盖函数似乎没有被调用?我的课程如下,面部检测示例代码(MainActivity)来自Space150

package com.space150.android.glass.opencvfacedetection;

import org.opencv.android.JavaCameraView;

import android.content.Context;
import android.hardware.Camera;
import android.util.AttributeSet;
import android.util.Log;

public class JView extends JavaCameraView {

    public JView(Context context, int cameraId) {
        super(context, cameraId);
    }

    public JView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    @Override
    protected boolean initializeCamera(int width, int height) 
    {
        Log.i("JVIEW", "initialize Camera");
        super.initializeCamera(width, height);

        Camera.Parameters params = mCamera.getParameters();

        // Post XE10 Hotfix
        params.setPreviewFpsRange(60000,60000);
        params.setPreviewSize(320,240);
        mCamera.setParameters(params);

        return true;
    }

}

此外,任何人都在体验并解决了Glass XE16.11上的毛刺相机预览问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的setPreviewFPSRange调用中的帧速率过高。你在60FPS。我已经在5和30 FPS测试了下面的代码并且它可以工作。

当你看到故障时,它看起来像这样:

enter image description here

这是我在XE16.11上运行的整个surfaceChanged方法。使用此代码没有上面的故障,我看到了正常的预览。

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        if (mCamera == null) return;

        Camera.Parameters camParameters = mCamera.getParameters();
        //start glass fix - use 5000 instead of 30000 for better battery performance
        camParameters.setPreviewFpsRange(30000, 30000);
        //end glass fix
        camParameters.setPreviewSize(1920, 1080);
        camParameters.setPictureSize(2592, 1944);
        mCamera.setParameters(camParameters);
        try {
            mCamera.startPreview();
        } catch (Exception e) {
            mCamera.release();
            mCamera = null;
        }
    }