Android中摄像头获取位图的处理
我从照相机上得到了一张位图。现在,我想检测照片中的人脸。我已经写了同样的代码。获得位图后,我使用FaceDetector.face来检测图像中的人脸,但每次我尝试在模拟器上运行它时,程序都会崩溃 这是我的密码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
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