今天实现了摄像头的预览图展示,以及获得当前图片的bitmap图片。明天准备用人脸识别读取bitmap图片,可能会遇到,如何传入格式的问题,加上把处理以后的bitmap图片展示出来。
今日总结:
安卓开发还是需要多看源码。
1.摄像头和surfaceview之间使用callback联调。把摄像头获得图像展示在surfaceview上面,如果需要知道原理需要深入安卓源码。
2.自己增加了一个自动对焦代码。
// CameraId 也可以 通过 参考 Camera.open() 源码 方法获取 Camera.Parameters parameters=camera.getParameters();
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); camera.setParameters(parameters); //自动聚焦:参考blog  https://blog.csdn.net/yanzi1225627/article/details/8577682方法5
3.还有需要处理摄像头图像的问题。图片需要旋转什么的。
4.获得当前帧我加在了
camera.setPreviewDisplay(surfaceHolder);//通过SurfaceView显示取景画面 camera.startPreview();//开始预览 isPreview = true;//设置是否预览参数为真 camera.setPreviewCallback(new Camera.PreviewCallback(){ @Override  public void onPreviewFrame(byte[] data, Camera camera) {
        Camera.Size size = camera.getParameters().getPreviewSize(); try{
            YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null); if(image!=null){
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                image.compressToJpeg(new Rect(0, 0, size.width, size.height), 80, stream);
                Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
                stream.close();
            }
            Log.d("image","get image success");
        }catch(Exception ex){
            Log.e("Sys","Error:"+ex.getMessage());
        }
    }
});
也是copy网上源码的,获得了bmp图片。加一个处理bmp图片的函数,里面用opencv人脸识别即可,明天需要学习如何在java里面调用opencv的底层方法。
5.明天需要实现展示功能.
额外知识:
callback=实现接口=listener