我尝试通过添加一个名为JView的新类来覆盖JavaCV的initializeCamera来实现this解决方案。我正在尝试使用此替代功能进行相机参数设置。但是,我发现这个覆盖函数似乎没有被调用?我的类(class)如下,面部检测示例代码(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上遇到并解决了故障摄像头预览问题吗?
谢谢!
最佳答案
在setPreviewFPSRange调用中,帧速率太高。您的速度为60FPS。我已经以5和30 FPS测试了以下代码,并且可以正常工作。
当您看到故障时,它看起来像这样:
这是我在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;
}
}