Face Recognition using javacv

595 views
Skip to first unread message

kav...@amazinggadgetdeals.com

unread,
Feb 10, 2015, 7:40:51 AM2/10/15
to jav...@googlegroups.com
Here is the code


      File path= Environment.getExternalStorageDirectory();
      String trainingDir = path.getAbsolutePath() + "/face";
      Mat testImage = imread(trainingDir+"/1-filename.png", CV_LOAD_IMAGE_GRAYSCALE);

      File root = new File(trainingDir);

      FilenameFilter imgFilter = new FilenameFilter() {
          public boolean accept(File dir, String name) {
              name = name.toLowerCase();
              return name.endsWith(".jpg") || name.endsWith(".pgm") || name.endsWith(".png");
          }
      };

      File[] imageFiles = root.listFiles(imgFilter);

      MatVector images = new MatVector(imageFiles.length);
      Mat labels = new Mat(imageFiles.length, 1, CvType.CV_32SC1);
      IntBuffer labelsBuf = labels.getIntBuffer();
   

      int counter = 0;

      for (File image : imageFiles) {
          Mat img = imread(image.getAbsolutePath(), CV_LOAD_IMAGE_GRAYSCALE);
          int label = Integer.parseInt(image.getName().split("-")[0]);
          images.put(counter, img);
          labelsBuf.put(counter, label);
          counter++;
      }

      opencv_contrib.FaceRecognizer faceRecognizer=new opencv_contrib.FaceRecognizer();
      faceRecognizer.train(images, labels);
      int predictedLabel = faceRecognizer.predict(testImage);
     


I got this error

W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
W/System.err﹕ java.lang.NullPointerException: This pointer address is NULL.
W/System.err﹕ at org.bytedeco.javacpp.opencv_contrib$FaceRecognizer.train(Native Method)
W/System.err﹕ at com.example.kavitha.androidface.MainActivity.opencvcheck(MainActivity.java:133)
W/System.err﹕ at com.example.kavitha.androidface.MainActivity$1.onClick(MainActivity.java:41) W/System.err﹕ at android.view.View.performClick(View.java:4295)
W/System.err﹕ at android.view.View$PerformClick.run(View.java:17456)
W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:615)
W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92)
W/System.err﹕ at android.os.Looper.loop(Looper.java:174)
W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:4952)
W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 0ms
D/dalvikvm﹕ GC_EXPLICIT freed 1458K, 22% free 10501K/13447K, paused 2ms+3ms, total 52ms
  

Samuel Audet

unread,
Feb 15, 2015, 6:02:17 AM2/15/15
to jav...@googlegroups.com
On 02/10/2015 09:40 PM, kav...@amazinggadgetdeals.com wrote:
> Here is the code

Do you get the same error when using this code instead?
https://github.com/bytedeco/javacv/blob/master/samples/OpenCVFaceRecognizer.java

Samuel

kav...@amazinggadgetdeals.com

unread,
Feb 20, 2015, 5:00:28 AM2/20/15
to jav...@googlegroups.com
I used " FaceRecognizer faceRecognizer =org.bytedeco.javacpp.opencv_contrib.createFisherFaceRecognizer();" instead "FaceRecognizer faceRecognizer = createFisherFaceRecognizer();

This solves my error.


Reply all
Reply to author
Forward
0 new messages