opencv - libreria - no se puede encontrar la biblioteca dependiente javacv
libreria opencv (2)
Tengo este código:
package javacv;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
import javax.swing.JOptionPane;
/**
*
* @author (Mahdi)
*/
public class JavaCv {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
try {
IplImage img = cvLoadImage("mehdi.jpg");
cvShowImage("Hellow", img);
cvSmooth(img, img, CV_GAUSSIAN, 13);
cvShowImage("Blur", img);
cvWaitKey();
cvReleaseImage(img);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
}
después de correr, lanza esta excepción:
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:/Users/(Mahdi)/AppData/Local/Temp/javacpp66820482987315/jniopencv_core.dll: Can''t find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:566)
at com.googlecode.javacpp.Loader.load(Loader.java:489)
at com.googlecode.javacpp.Loader.load(Loader.java:431)
at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:136)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at com.googlecode.javacpp.Loader.load(Loader.java:453)
at com.googlecode.javacv.cpp.opencv_imgproc.<clinit>(opencv_imgproc.java:97)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at com.googlecode.javacpp.Loader.load(Loader.java:453)
at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:85)
at javacv.JavaCv.main(JavaCv.java:23)
Caused by: java.lang.UnsatisfiedLinkError: no opencv_core244 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:593)
at com.googlecode.javacpp.Loader.load(Loader.java:481)
... 11 more
Java Result: 1
¿alguna idea?
Java está intentando encontrar dlls necesarios en $ {java.library.path} pero no está definido. Entonces deberías:
- Establezca la ubicación de opencv_java244.dll en% PATH% ("c: / opencv / build / java / x64 /", por ejemplo).
- Cree en su dir de proyecto dir "lib".
- Ponlo ahí:
- javacpp.jar
- javacv.jar
- javacv-windows-x86_64.jar
- opencv-2.4.4-windows-x86_64.jar
- opencv-244.jar
Si la bitness de su plataforma es 32, entonces use versiones * x86.jar.
Y luego puedes usar esta secuencia de comandos mod mod de opencv / samples / java / ant / para ejecutar tu aplicación:
<project name="JavaCv" basedir="." default="rebuild-run">
<property name="src.dir" value="src"/>
<property name="lib.dir" value="lib"/>
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="main-class" value="${ant.project.name}"/>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac includeantruntime="false" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java fork="true" classname="${main-class}">
<classpath>
<path refid="classpath"/>
<path location="${jar.dir}/${ant.project.name}.jar"/>
</classpath>
</java>
</target>
<target name="rebuild" depends="clean,jar"/>
<target name="rebuild-run" depends="clean,run"/>
O puede definir $ {java.library.path} en su script ant como este:
<target name="run" depends="jar">
<java fork="true" classname="${main-class}">
<sysproperty key="java.library.path" path="PUT_YOUR_PATH_HERE"/>
<classpath>
<path refid="classpath"/>
<path location="${jar.dir}/${ant.project.name}.jar"/>
</classpath>
</java>
</target>
¿Intentó extraer el directorio de opencv como c: / opencv? Esa es una manera fácil de arreglar esto.