gpt4 book ai didi

Android FaceDetector 找不到任何面孔...findFace() 每次都返回 0

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:28 24 4
gpt4 key购买 nike

我正在尝试构建一个可以检测设备相机拍摄的照片中面孔数量的应用程序。到目前为止,我的代码如下所示。通过研究此处的问题,我认为这可能是图片分辨率对于 FaceDetector 而言太差的问题,但如果是这样,我不确定如何解决该问题。如果不是这种情况,那么我不知道哪里出了问题。非常感谢任何帮助!

public class CrowdDetection extends Activity {

ImageView display;
ImageView pic;
Bitmap image;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crowd_detection);

display = (ImageView) findViewById(R.id.imageView2);

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

@Override
public void onClick(View v) {

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);

}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){

super.onActivityResult(requestCode, resultCode, data);

setContentView(R.layout.detect_faces);

pic = (ImageView) findViewById(R.id.imageView1);

image = (Bitmap) data.getExtras().get("data");
image = BitmapFactory.decodeFile(data.getData().getPath());
pic.setImageBitmap(image);

Button detect = (Button) findViewById(R.id.button2);
detect.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v){
detectFaces();
}
});
}

private void detectFaces() {

setContentView(R.layout.display_crowd);

int h = image.getHeight();
int w = image.getWidth();
int max = 10;

FaceDetector detector = new FaceDetector(w, h, max);
Face[] faces = new Face[max];

ImageView pic2 = (ImageView) findViewById(R.id.imageView3);
pic2.setImageBitmap(image);

int facesFound = detector.findFaces(image, faces);

TextView result = (TextView) findViewById(R.id.textView3);

if(facesFound>5){
result.setText("There are " + facesFound + " faces in this picture, therefore you have a crowd!");
}
else{
result.setText("There are only " + facesFound + " faces in this picture, therefore you do not have a crowd!");
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.crowd_detection, menu);
return true;
}

}

提前感谢您的帮助!

最佳答案

无法检测到任何面孔的原因是您需要将位图转换为 RGB 565。

使用它来将位图转换为 RGB 565

BitmapFactory.Options bitmapFatoryOptions=new BitmapFactory.Options();
bitmapFatoryOptions.inPreferredConfig=Bitmap.Config.RGB_565;
image=BitmapFactory.decodeResource(getResources(), R.drawable.image,bitmapFatoryOptions);

关于Android FaceDetector 找不到任何面孔...findFace() 每次都返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19782215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com