使用FaceDetectionListener在画布上绘制画布

时间:2013-02-06 11:24:29

标签: android face-detection

我正在玩FaceDetectionListener,我的目的是在眼睛周围画一个圆圈。我有一个名为SurfaceView的{​​{1}}对象和一个名为preview的{​​{1}}对象。

一切都运作良好,我可以使用后挡板检测我SurfaceHolder中表示的许多面孔。我还想在左眼和右眼周围画一些圆圈。我的previewHolder方法如下所示:

SurfaceView

drawCanvas

调用此方法
      private void drawCanvas(float x, float y) {
            Canvas canvas = previewHolder.lockCanvas();
            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

            paint.setColor(Color.BLACK);
            paint.setDither(true); 
            paint.setColor(0xFFFFFF00);
            paint.setStyle(Paint.Style.STROKE);
            paint.setStrokeJoin(Paint.Join.ROUND);
            paint.setStrokeCap(Paint.Cap.ROUND);
            paint.setStrokeWidth(3);

            canvas.drawPoint(x, y, paint);
            previewHolder.unlockCanvasAndPost(canvas);
      }

我在第FaceDetectionListener

处不断收到NullPointerException

相机移动时我可以画点,暗示和其他东西吗?或者我必须先捕捉图片?

所以我的问题是:以前是否有人完成了这项工作并想告诉我如何才能这样做?

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,我也见过这个问题。返回的Face对象是android.hardware.Camera.Face而不是FaceDetector.Face,只有rect对象在那里有有效信息。 rect对象的边界在摄像机坐标系中。您必须将它们转换为视图坐标系。它在下面的link下解释了