我在玩FaceDetectionListener
,我的目的是圍繞眼睛畫一個圓圈。我有名爲preview
的SurfaceView
對象和名爲previewHolder
的SurfaceHolder
對象。使用FaceDetectionListener在眼睛上畫畫布
一切工作得很好,我可以使用後視鏡檢測到我的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
叫:
@Override
public void onFaceDetection(Face[] faces, Camera camera) {
if (faces.length > 0) {
tv.setText(String.valueOf(faces.length) + " Face(s) Detected");
for(Face f : faces) {
int leftEyeXCoordinate = f.leftEye.x;
int leftEyeYCoordinate = f.leftEye.y;
drawCanvas(leftEyeXCoordinate, leftEyeYCoordinate);
int rightEyeXCoordinate = f.rightEye.x;
int rightEyeYCoordinate = f.rightEye.y;
drawCanvas(rightEyeXCoordinate, rightEyeYCoordinate);
}
}
else
tv.setText("No Faces Detected!");
}};
我一直在該行int leftEyeXCoordinate = f.leftEye.x;
我能畫點,rects等得到一個NullPointerException異常相機正在移動時的東西?或者我必須先拍攝照片?
所以我的問題是:以前有沒有人做過這件事,想告訴我我該怎麼做?
謝謝!