2012-02-13 11 views
5

मैं एंड्रॉयड पर चेहरे का पता लगाने कर कोशिश कर रहा हूँ, और मैं http://www.richardnichols.net/2011/01/java-facial-recognition-haar-cascade-with-jjil-guide/एंड्रॉयड चेहरे की पहचान

लेकिन एंड्रॉयड पर बजाय गाइड अनुसरण कर रही हूं। जब मैं कर

Gray8DetectHaarMultiScale detectHaar = new Gray8DetectHaarMultiScale(is, minScale, maxScale); 
RgbAvgGray toGray = new RgbAvgGray(); 
toGray.push(RgbImage); 
detectHaar.pushAndReturn(toGray.getFront()); 

ऐसा लगता है कि pushAndReturn केवल Android पर छवि से एक चेहरा लौटा रहा है, हालांकि सटीक कोड NetBeans कोड का उपयोग कर 2 चेहरे देता है। अंतर केवल छवि के प्रकार में है (netbans पर एंड्रॉइड और RgbImageJ2se पर RgbImage)

मुझे नहीं पता कि मैं क्या खो रहा हूं और मैं एंड्रॉइड पर एक से अधिक चेहरे का पता क्यों नहीं लगा सकता?

मैं जेजेआईएल का उपयोग कर रहा हूं इसलिए मेरा मतलब आरजीबीआईमेज: jjil.core.RgbImage प्रकार, बनाम RgbImageJ2SE प्रकार है। बाकी बस वही है !! ऐसा लगता है कि pushAndReturn केवल स्टैक में एक प्रविष्टि लौटा रहा है। यह किसी भी छवि पर एक से अधिक चेहरे पर काम नहीं करता है।

+0

यह स्पष्ट नहीं है कि क्या RgbImage, है आप कैसे निर्धारित करने कर रहे हैं कि एक चेहरा दिया जाता है और नहीं 2, या Android पर कैसे इस जावा कोड से सभी चेहरों का पता लगाने एक पीसी पर जावा में आप जो भी चलाते हैं उससे अलग है। क्या आप एंड्रॉइड पर जावा से पीसी पर जावा में एक अलग परिणाम का एक उदाहरण दे सकते हैं, और कुछ और विवरण दे सकते हैं? –

+0

कृपया एंड्रॉइड फेस डिटेक्शन के पूर्ण उदाहरण के लिए मेरा संपादन – Adroidist

+0

देखें, मेरा उत्तर यहां देखें: http://stackoverflow.com/questions/4125821/face-detection-in-android – Jorgesys

उत्तर

13

यह अपने काम करने के लिए जाओ और किसी दिए गए चित्र

public class AndroidFaceDetector extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.main); 
     setContentView(new myView(this)); 
    } 

    private class myView extends View{ 

    private int imageWidth, imageHeight; 
    private int numberOfFace = 5; 
    private FaceDetector myFaceDetect; 
    private FaceDetector.Face[] myFace; 
    float myEyesDistance; 
    int numberOfFaceDetected; 

    Bitmap myBitmap; 


    public myView(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 

    BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options(); 
    BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565; 
    myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.face5, 
     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) { 
    // TODO Auto-generated method stub 

      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), 
       (int)(myMidPoint.y - myEyesDistance), 
       (int)(myMidPoint.x + myEyesDistance), 
       (int)(myMidPoint.y + myEyesDistance), 
       myPaint); 
      } 
    } 
    } 
} 
+0

हे समीर, धन्यवाद, यह काम करता है लेकिन ऐसा लगता है केवल छोटे आकार की छवियों पर काम करें, क्योंकि जब मैं अपने सैमसंग गैलेक्सी के कैमरे का उपयोग करता हूं तो यह किसी भी चेहरे का पता नहीं लगा सकता है, क्या इसे कोड के साथ करना है? – Adroidist

+0

यह हर आकार की छवि के लिए काम करेगा। इसके साथ खेलने की कोशिश करें क्योंकि मैं इस परिदृश्य को पूरा नहीं कर रहा हूं। और यदि आप समाधान से संतुष्ट हैं तो कृपया इसे उत्तर के रूप में चिह्नित करें। – Sameer

+0

फेसडिएक्शन एपीआई के लिए, ऐसा लगता है कि केवल आंखों के मध्य और उनके बीच की दूरी का पता लगाना है, लेकिन क्या व्यक्तिगत आंखों को प्राप्त करना संभव है? या यह जानना संभव है कि चेहरा मोटा हुआ है? –

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