2012-02-13 21 views
5

Ben robot üzerinde yüz algılamayı yapmaya çalışıyorum ve ben http://www.richardnichols.net/2011/01/java-facial-recognition-haar-cascade-with-jjil-guide/Android Yüz Algılama

ama android yerine rehber takip ediyorum. i

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

yaptığınızda O tam kod netbeans kodu kullanarak 2 yüzleri döndürür rağmen pushAndReturn yalnızca Android görüntüden bir yüzü dönüyor gibi görünüyor. Fark sadece resmin türündedir (android üzerinde RgbImage ve netbeans'de RgbImageJ2se)

Neyi kaçırdığımı ve neden birden fazla yüzü Android'de algılayamadığımı bilmiyorum.

Ben JJIL kullanıyorum, bu yüzden RgbImage: jjil.core.RgbImage türü, RgbImageJ2SE türünü kastediyorum. Geri kalan sadece aynı! pushAndReturn sadece yığın içinde bir giriş döndürüyor gibi görünüyor. Bu, birden fazla yüzü olan herhangi bir görüntü üzerinde çalışmaz.

+0

değil 2 veya Android'de nasıl bu Java kodu tüm yüzleri tespit Java'da bir PC'de koştuğunuzdan farklı. Java'da Android'de Java'da farklı bir sonuca sahip olan tam bir kod örneği verebilir ve daha fazla ayrıntı verebilir misiniz? –

+0

Android Face Detection tam bir örnek için benim düzenleme – Adroidist

+0

kontrol edin benim cevap burada bakın: http://stackoverflow.com/questions/4125821/face-detection-in-android – Jorgesys

cevap

13

bu onun çalışma için git ve belirli bir resmin

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); 
      } 
    } 
    } 
} 
Size bir yüz döndürülür belirlerken nasıl, ne RgbImage net değil
+0

hey Sameer, teşekkürler u çalışıyor ama görünüyor Sadece küçük boyutlu görüntüler üzerinde çalışıyorum, çünkü Samsung galaksilerimin kamerasını kullandığımda herhangi bir yüzü algılayamaz, kodla ilgisi var mı? – Adroidist

+0

Her boyuttaki görüntü için çalışacaktır. Bu senaryoyu karşılamadığım için onunla oynamayı deneyin. Eğer çözümden memnunsanız, lütfen cevap olarak işaretleyin. – Sameer

+0

FaceDetection API'sı için, gözlerin sadece ortalarını ve aralarındaki mesafeyi algılar gibi görünüyor, ancak tek tek gözlere ulaşmak mümkün mü? Yoksa yüzün eğik olduğunu bilmek mümkün mü? –