我尝试通过添加一个名为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上的毛刺相机预览问题?
谢谢!
答案 0 :(得分:1)
您的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;
}
}