2010-09-13 13 views
10

¡Me estoy desesperando! Estoy tratando de usar OpenCV en Java, a través de JavaCV (JNA para envolver OpenCV para java).Usando OpenCV en Java con JavaCV

Estoy en Mac Os X 1.5.

Instalé OpenCV, y puedo compilar y ejecutar los ejemplos incluidos. Entonces eso funciona

Ahora puedo abrir Eclipse, y crear un nuevo proyecto, tal como se describe aquí: http://code.google.com/p/javacv/

En ese nuevo proyecto, sólo una pequeña clase con una llamada a una función OpenCV (I utiliza el código de ejemplo):

import static name.audet.samuel.javacv.jna.cxcore.*; 
import static name.audet.samuel.javacv.jna.cv.*; 
import static name.audet.samuel.javacv.jna.highgui.*; 
import static name.audet.samuel.javacv.jna.cvaux.*; 

public class Test { 
    public static void main(String[] args) { 
     IplImage image = cvLoadImage("test.png", 1); 
     if (image == null) { 
      System.err.println("Could not load image file."); 
     } else { 
      cvSmooth(image, image, CV_GAUSSIAN, 3, 0, 0, 0); 
      // ... 
     } 
    } 
} 

Cuando corro, tengo el siguiente error:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'cxcore': dlopen(libcxcore.dylib, 9): image not found

Por favor, necesito ayuda, revisé google durante horas, ya no sé dónde buscar.

+0

publicar su código favor – dnul

+0

@Matthieu: OSX usuarios tienen a veces un problema de compatibilidad entre la biblioteca de 32 bits o 64 bits VM. ¿Puede probar con la opción -d32 como argumento de VM al iniciar la configuración de inicio de Eclipse? – JoseK

+1

Agregué el código (este es el código de ejemplo de JavaCV). Intenté el argumento "-d32" y me aparece el siguiente error: "No se puede ejecutar Java en modo de 32 bits. Continuar en modo de 64 bits". Tal vez es eso? –

Respuesta

4

Resultó que la versión SVN no era compatible con JavaCV.

Descargué la última versión oficial (2.1) y la compilé e instalé, y funciona.

Ver http://code.google.com/p/javacv/issues/detail?id=19

+0

para una implementación más simple también échele un vistazo aquí: http://ubaa.net/shared/processing/opencv/ –

+0

Pues bien, resulta que la versión 2.1 no funciona (al menos en mi máquina con OS X 10.5) , pero el SVN funciona en programas C++. Pero el 2.1 es compatible con JavaCV, y no con la versión SVN. Entonces para mí ahora, OpenCV puede funcionar, pero no JavaCV. –

1

es necesario enlazar estas dos bibliotecas:

- javacpp.jar 
- javacv.jar 

En el directorio/lib-OpenCV JavaCV/win_x86_64 usted tiene que tener los archivos de su gusto:

- msvcp100.dll 
- msvcr100.dll 
- opencv_core220.dll 
- opencv_calib3d220.dll 
- ... 

Estas DLL deben compilarse para su plataforma (win 32/win 64/Linux/etc.

Usted tiene que definir ruta de los archivos DLL OpneCV:

-Djava.library.path=lib-opencv/win_x86_64/ 
- or the DLLs have to be somewhere in your system PATH of your operating system 
0

me había basado en este problema por un tiempo, ya que el OP sugiere todo tipo de problemas Iniciar rastreo de la carpintería. Revisé un montón de publicaciones de StackOverflow para poder crear una experiencia relativamente sencilla para configurar un proyecto de OpenCV en Java. Revisé JavaCV y descubrí que no satisfacía mis necesidades. Sin embargo, pude implementar directamente la funcionalidad referenciada en las publicaciones de OpenCV (publicaciones C++) pero en el lenguaje Java cuando utilicé ciertas versiones de javacpp. También tuve un montón de problemas de compilación, ya que javacpp depende de bibliotecas compiladas de C++ que deben ser nativas del entorno en el que se encuentra el usuario (algo que a las personas que viven en tierra de Java les encanta no tratar). De todos modos, pude construir y crear un entorno con Maven. Yo uso eclipse, pero esto debería funcionar bien con otros entornos de programación. Puse un proyecto de ejemplo para ilustrar cómo comenzar a construir un proyecto de arranque y comenzar a trabajar. El proyecto compara 2 imágenes, dadas sus URL. Es una prueba de igualdad, ya sea que las imágenes sean idénticas o no. Con suerte, esto puede ayudar a la gente a configurar y trabajar en este entorno y evitar las toneladas y toneladas de errores que encontré al intentar trabajar con OpenCV en Java (estaba en el mismo lugar que OP mentalmente en ese momento :)).

El ejemplo: https://github.com/darkhipo/ImgzCmp

Cuestiones relacionadas