2010-11-08 19 views
27

मैं वर्तमान में एक प्रयोगात्मक कैमरा ऐप पर काम कर रहा हूं। मैं इस समय चेहरे का पता लगाने को लागू करने में देख रहा हूं और वर्तमान में अपने विकल्पों का वजन कर रहा हूं।एंड्रॉइड में फेस डिटेक्शन?

मैं Android के लिए और उनके चेहरे का पता लगाने कार्यों का उपयोग कर उपलब्ध OpenCV बंदरगाह पर विचार किया है, लेकिन क़ौम मैं पिछले कार्यान्वयन के देखा है से, कैमरा एक बहुत अंतराल लगता है।

एचटीसी डिजायर पर कैमरे को ध्यान में रखते चेहरे का पता लगाने समर्थन हासिल है, मुझे पता है यह जगह में कम से कम एक अर्द्ध सभ्य चेहरे का पता लगाने प्रणाली पाने के लिए संभव होना चाहिए। मैं बस सोच रहा था कि अगर किसी के पास कोई राय है कि मैं सर्वोत्तम परिणाम कैसे प्राप्त कर सकता हूं ... उपलब्ध पुस्तकालय का उपयोग करना? खुद को एक विशेष एल्गोरिदम लागू करना?

उत्तर

6

एंड्रॉइड एसडीके FaceDetector के साथ आता है जिसका उपयोग किसी दिए गए बिटमैप में find faces पर किया जा सकता है।

मैं इसे अपने आप उपयोग नहीं किया है, लेकिन चेहरे विरूपण क्षुधा के डेवलपर्स यह OpenCV की तुलना में बहुत सही नहीं है का कहना है। यह आपकी जरूरतों के अनुरूप हो सकता है, हालांकि यह शायद एचटीसी डिजायर का कैमरा ऐप उपयोग करता है।

+0

आप भी चलाने की क्षमता क्या है एचटीसी पर इंटेल प्रदर्शन पुस्तकालय? यदि हां, तो मुझे लगता है कि ओपनसीवी बहुत प्रभावशाली प्रदर्शन लाभ देने के लिए आईपीपी के साथ जोड़ा जा सकता है। – Denis

11
  1. एंड्रॉइड एसडीके में FaceDetector आज़माएं। यह बीएमपी में चेहरे की स्थिति और कोण लौटाता है। लेकिन यह बहुत तेज़ नहीं है।

    यहाँ एक realtime face detection sample FaceDetector का उपयोग कर और ओपन जो Android 2.2 में काम करता है (आयत ड्रॉ)।

  2. OpenCV in Android

    बेहतर होगा कि तुम लिनक्स पर यह कोशिश करता हूँ (मैं इसे विंडोज पर की कोशिश की है, लेकिन विफल)।

  3. JavaCV (जोरदार सिफारिश की)

    वहाँ वास्तविक समय चेहरे का पता लगाने कैमरे का उपयोग का एक नमूना कोड है। डाउनलोड पेज पर "javacv-src - *। ज़िप" देखें।

+0

अपने http://opencv.willowgarage.com/wiki/Android टूट गया है – eeadev

+1

तुम भी नए Android चेहरा एपीआई (ध्यान दें कि यह FaceDetector वर्ग ऊपर उल्लेख किया है से अलग है) की कोशिश कर सकते। देखें: https://developers.google.com/vision/ – pm0733464

3

यह एक बुनियादी उदाहरण का उपयोग FaceDetector वर्ग है

public myView(Context context) { 
     super(context); 
     BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options(); 
     BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565; 
     myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.threepoint_shooters_1990, BitmapFactoryOptionsbfo); 
     imageWidth = myBitmap.getWidth(); 
     imageHeight = myBitmap.getHeight(); 
     myFace = new FaceDetector.Face[numberOfFace]; 
     myFaceDetect = new FaceDetector(imageWidth, imageHeight, numberOfFace); 
     numberOfFaceDetected = myFaceDetect.findFaces(myBitmap, myFace); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawBitmap(myBitmap, 0, 0, null); 
     Paint myPaint = new Paint(); 
     myPaint.setColor(Color.GREEN); 
     myPaint.setStyle(Paint.Style.STROKE); 
     myPaint.setStrokeWidth(3); 
     for (int i = 0; i < numberOfFaceDetected; i++) { 
      Face face = myFace[i]; 
      PointF myMidPoint = new PointF(); 
      face.getMidPoint(myMidPoint); 
      myEyesDistance = face.eyesDistance(); 
      canvas.drawRect((int) (myMidPoint.x - myEyesDistance * 2), 
        (int) (myMidPoint.y - myEyesDistance * 2), 
        (int) (myMidPoint.x + myEyesDistance * 2), 
        (int) (myMidPoint.y + myEyesDistance * 2), myPaint); 
     } 
    } 

enter image description here

यहाँ पूर्ण स्रोत कोड डाउनलोड: https://github.com/Jorgesys/Android_Face_Detection

संबंधित मुद्दे