I'm trying to extract Surf features without success. It seems it's missing a log4j dependency.
The code that I'm using:
import de.lmu.ifi.dbs.jfeaturelib.features.SURF
import ij.process.ColorProcessor;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
import javax.imageio.ImageIO;
/**
* Example of extracting SURF features from section "Detecting the scale-invariant SURF features" in chapter 8.
*/
object Surf extends App {
// Read input image
val f = new File("test.jpg");
val image = new ColorProcessor(ImageIO.read(f));
val descriptor = new SURF();
descriptor.run(image);
val features = descriptor.getFeatures();
println(features);
}
build.sbt
name := "opencv2-scala-test"
organization := "samos"
exportJars := true
// Some dependencies like `javacpp` are packaged with maven-plugin packaging
classpathTypes += "maven-plugin"
libraryDependencies ++= Seq(
// "de.lmu.ifi.dbs.jfeaturelib" % "JFeatureLib" % "1.6.3",
"gov.nih.imagej" % "imagej" % "1.47"
)
libraryDependencies += "org.apache.logging.log4j" % "log4j-core" % "2.5"
libraryDependencies += "org.apache.logging.log4j" % "log4j-api" % "2.5"
libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.13"
Error that's seen:
java -jar opencv2-scala-test-assembly-0.1-SNAPSHOT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at de.lmu.ifi.dbs.jfeaturelib.features.surf.IJFacade.(IJFacade.java:41)
at de.lmu.ifi.dbs.jfeaturelib.features.SURF.run(SURF.java:97)
at Surf$delayedInit$body.apply(Surf.scala:20)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
at scala.App$class.main(App.scala:71)
at Surf$.main(Surf.scala:14)
at Surf.main(Surf.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 12 more
I'm trying to extract Surf features without success. It seems it's missing a log4j dependency.
The code that I'm using:
build.sbt
Error that's seen:
java -jar opencv2-scala-test-assembly-0.1-SNAPSHOT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at de.lmu.ifi.dbs.jfeaturelib.features.surf.IJFacade.(IJFacade.java:41)
at de.lmu.ifi.dbs.jfeaturelib.features.SURF.run(SURF.java:97)
at Surf$delayedInit$body.apply(Surf.scala:20)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
at scala.App$class.main(App.scala:71)
at Surf$.main(Surf.scala:14)
at Surf.main(Surf.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 12 more