Android中摄像头获取位图的处理

Android中摄像头获取位图的处理,android,bitmap,android-camera,Android,Bitmap,Android Camera,我从照相机上得到了一张位图。现在,我想检测照片中的人脸。我已经写了同样的代码。获得位图后,我使用FaceDetector.face来检测图像中的人脸,但每次我尝试在模拟器上运行它时,程序都会崩溃 这是我的密码 public class Main extends Activity { /** Called when the activity is first created. */ final int CAMERA_PIC_REQUEST = 1337; Bitmap n

我从照相机上得到了一张位图。现在,我想检测照片中的人脸。我已经写了同样的代码。获得位图后,我使用FaceDetector.face来检测图像中的人脸,但每次我尝试在模拟器上运行它时,程序都会崩溃

这是我的密码

public class Main extends Activity {
    /** Called when the activity is first created. */
    final int CAMERA_PIC_REQUEST = 1337; 
    Bitmap new1Bitmap;
    private int imageWidth, imageHeight;
    private int numberOfFace = 1;
    private FaceDetector myFaceDetect; 
    private FaceDetector.Face[] myFace;
    float myEyesDistance;
    int numberOfFaceDetected;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
                startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
            }
        });
    }

    protected void onActivityResult(int requestCode, int resultCode,Intent data) {
        if (requestCode == CAMERA_PIC_REQUEST) {
            // do something
            new1Bitmap = (Bitmap) data.getExtras().get("data");  // get the Image from Camera
            imageWidth = new1Bitmap.getWidth();
            imageHeight = new1Bitmap.getHeight();
            myFace = new FaceDetector.Face[numberOfFace];
            myFaceDetect = new FaceDetector(imageWidth, imageHeight, numberOfFace);
            numberOfFaceDetected = myFaceDetect.findFaces(new1Bitmap, myFace); 

            ImageView image = (ImageView) findViewById(R.id.imageView1);
            //image.setImageBitmap(new1Bitmap); 
            Canvas canvas = null; 
            canvas.drawBitmap(new1Bitmap, 0, 0, null);
            Paint myPaint = new Paint();
            myPaint.setColor(Color.RED);
            myPaint.setStyle(Paint.Style.STROKE);
            myPaint.setStrokeWidth(5);

            for(int i=0; i < numberOfFaceDetected; i++)
            {
                Face face = myFace[i];
                PointF lEye=new PointF();
                PointF rEye=new PointF();

                PointF myMidPoint = new PointF();
                face.getMidPoint(myMidPoint);
                myEyesDistance = face.eyesDistance();
                canvas.drawCircle((float)(myMidPoint.x-myEyesDistance/2.0), myMidPoint.y, (float)20.0, myPaint);
                canvas.drawCircle((float)(myMidPoint.x+myEyesDistance/2.0), myMidPoint.y, (float)20.0, myPaint);
            }
        }
    }
}

谢谢

你试过看原木猫吗?它应该准确地告诉您发生异常的行。如果您的logcat为空,则打开ddms进行错误检查您需要获取日志,否则我们将大海捞针。找出logcat未显示设备日志的原因,修复它,然后使用堆栈跟踪编辑您的答案。您正在使用摄像头功能,并在设备上尝试它未模拟添加的logcat错误,请查看!
04-14 23:12:02.052: E/AndroidRuntime(941): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1337, result=-1, data=Intent { act=inline-data (has extras) }} to activity {live.face.detection/live.face.detection.Main}: java.lang.NullPointerException