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

Android FaceDetector找不到任何面孔… findFace()每次都返回0,第1张

概述我正在尝试构建一个可以检测设备摄像头拍摄的照片中脸部数量的应用程序.到目前为止,我所拥有的代码如下所示.通过研究这里的问题,我认为这可能是一个问题,图片的分辨率对于FaceDetector来说太差了,但如果是这样的话,我不知道如何解决这个问题.如果情况并非如此,那么我对错误感到茫然.任何帮助深表感谢! public class CrowdDetection extends Activity { 我正在尝试构建一个可以检测设备摄像头拍摄的照片中脸部数量的应用程序.到目前为止,我所拥有的代码如下所示.通过研究这里的问题,我认为这可能是一个问题,图片的分辨率对于FaceDetector来说太差了,但如果是这样的话,我不知道如何解决这个问题.如果情况并非如此,那么我对错误感到茫然.任何帮助深表感谢!
public class CrowdDetection extends Activity {ImageVIEw display;ImageVIEw pic;Bitmap image;@OverrIDeprotected 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);        }    });}@OverrIDeprotected 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!");    }}@OverrIDepublic 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全部内容,希望文章能够帮你解决Android FaceDetector找不到任何面孔… findFace()每次都返回0所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1134440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存