i attempting use dogsiftfeaturecomparator facesimilarityengine. here's code:
import java.io.file; import java.io.ioexception; import java.util.map; import java.util.map.entry; import org.openimaj.image.displayutilities; import org.openimaj.image.fimage; import org.openimaj.image.mbfimage; import org.openimaj.image.colour.rgbcolour; import org.openimaj.image.imageutilities; import org.openimaj.image.processing.face.detection.haarcascadedetector; import org.openimaj.image.processing.face.detection.detectedface; import org.openimaj.image.processing.face.feature.dogsiftfeature; import org.openimaj.image.processing.face.feature.comparison.dogsiftfeaturecomparator; import org.openimaj.image.processing.face.similarity.facesimilarityengine; import org.openimaj.math.geometry.shape.rectangle; public class facesimilarity { public static void main(string[] args) throws ioexception { final file ifile1 = new file("/path/to/first/image.jpg"); final file ifile2 = new file("/path/to/second/image.jpg"); final mbfimage mbimg1 = imageutilities.readmbf(ifile1); final mbfimage mbimg2 = imageutilities.readmbf(ifile2); final fimage image1 = mbimg1.flatten(); final fimage image2 = mbimg2.flatten(); final haarcascadedetector detector = haarcascadedetector.builtincascade.frontalface_default.load(); final dogsiftfeature.extractor extractor = new dogsiftfeature.extractor(); final dogsiftfeaturecomparator comparator = new dogsiftfeaturecomparator(); final facesimilarityengine<detectedface, dogsiftfeature, fimage> engine = new facesimilarityengine<>(detector, extractor, comparator); engine.setquery(image1, "image1"); engine.settest(image2, "image2"); engine.performtest(); // rest of code } } this same code works when facesimilarityengine uses fkefacedetector, facepathfeature extractor, , facefvcomparator instead, code above results in following error message:
exception in thread "main" java.lang.nullpointerexception @ org.openimaj.math.geometry.transforms.residuals.transformedsitr2d.computeresidual(transformedsitr2d.java:76) @ org.openimaj.math.model.fit.simplemodelfitting.fitdata(simplemodelfitting.java:117) @ org.openimaj.feature.local.matcher.consistent.consistentlocalfeaturematcher2d.findmatches(consistentlocalfeaturematcher2d.java:138) @ org.openimaj.image.processing.face.feature.comparison.dogsiftfeaturecomparator.compare(dogsiftfeaturecomparator.java:152) @ org.openimaj.image.processing.face.feature.comparison.dogsiftfeaturecomparator.compare(dogsiftfeaturecomparator.java:68) @ org.openimaj.image.processing.face.similarity.facesimilarityengine.performtest(facesimilarityengine.java:224) @ // line of code engine.performtest(); i though maybe dogsiftfeaturecomparator didn't work facesimilarityengine, created class instead (same imports except facesimilarityengine):
public class dogsiftcompare { public static void main(string[] args) throws ioexception { // created fimages same way previous code final haarcascadedetector detector = haarcascadedetector.builtincascade.frontalface_default.load(); final dogsiftfeature.extractor extractor = new dogsiftfeature.extractor(); final dogsiftfeaturecomparator comparator = new dogsiftfeaturecomparator(); list<detectedface> faces = detector.detectfaces(image1); list<detectedface> faces2 = detector.detectfaces(image2); list<dogsiftfeature> features1 = new arraylist<>(); list<dogsiftfeature> features2 = new arraylist<>(); if (!faces.isempty()) { (detectedface face : faces) { dogsiftfeature feature = extractor.extractfeature(face); features1.add(feature); } } if (!faces2.isempty()) { (detectedface face : faces2) { dogsiftfeature feature = extractor.extractfeature(face); features2.add(feature); } } detectedface face1 = null; detectedface face2 = null; double bestscore = double.max_value; if (!features1.isempty() && !features2.isempty()) { (int = 0; < features1.size(); i++) { (int j = 0; j < features2.size(); j++) { double score = comparator.compare(features1.get(i), features2.get(j)); if (score < bestscore) { bestscore = score; face1 = faces.get(i); face2 = faces2.get(j); } } } } // rest of code ... } } running code, however, produces same error previous code did:
exception in thread "main" java.lang.nullpointerexception @ org.openimaj.math.geometry.transforms.residuals.transformedsitr2d.computeresidual(transformedsitr2d.java:76) @ org.openimaj.math.model.fit.simplemodelfitting.fitdata(simplemodelfitting.java:117) @ org.openimaj.feature.local.matcher.consistent.consistentlocalfeaturematcher2d.findmatches(consistentlocalfeaturematcher2d.java:138) @ org.openimaj.image.processing.face.feature.comparison.dogsiftfeaturecomparator.compare(dogsiftfeaturecomparator.java:152) @ //line of code double score = comparator.compare(features1.get(i), features2.get(j)); so guess i'm asking if i'm missing key variable particular feature comparator, or problem dogsiftfeaturecomparator itself?
Comments
Post a Comment