viernes, 10 de agosto de 2012

Cómo crear un Applet con JavaCV (Windows)

Lo más interesante de programar algo con OpenCV es luego poder compartirlo. Pero ¿qué problema hay con OpenCV? Que hay que generar un ejecutable para cada plataforma... Es aquí donde entra en juego JavaCV, que nos permite crear JARs ejecutables multiplataformas.

Hasta ahora, vimos cómo crear aplicaciones con los JARs de JavaCV tal como vienen por defecto. Pero para poder utilizar nuestra aplicación en cualquier computadora (que no tenga OpenCV instalado) se deberán hacer algunas modificaciones.
 
Al momento de realizar este post, aún existían complicaciones con javacv y Ubuntu, por lo cual para las versiones de aquella época se recomienda hacerlo desde Windows, como se muestra en este post.

Sin embargo, existía una manera de hacerlo (que funciona en algunas distribuciones, como open Suse, y en otras no, como Ubuntu). He aquí las instrucciones:

Antes de comenzar, se asume que lo siguiente está instalado:
  • Java en tu navegador. Verificalo ingresando aquí. Si no está instalado, se puede descargar desde aquí.
  • Java Development Kit. Se puede descargar desde aquí.
  • OpenCV: se descarga desde aquí y simplemente se descomprime en el disco C, de modo que quede todo dentro de C:\opencv
  • MVC++ 2010: se descarga desde aquí para 32 bits o desde aquí para 64 bits.


Ahora si:
  1. Descomprimir el paquete javacv, y luego descomprimir los siguientes archivos en una misma ubicación (click derecho -->"extract here" si tienen Winrar). Se generará una sola carpeta llamada "com".

    Atención: en Linux se debe descomprimir con comando, porque algunos compresores de uso general descomprimen mal estos jar.
    .
  2. Navegar hasta ...\com\googlecode\javacv\cpp\windows-x86 y copiar dentro de ella los siguientes archivos:
    *  tbb.dll       (se encuentra dentro de OpenCV, en build commons si mal no
        recuerdo)
    *  msvcp100.dll       (C:\Windows\System32)
    *  msvcr100.dll       (C:\Windows\System32)
    *  opencv_core242.dll
    *  opencv_highgui242.dll
    *  opencv_imgproc242.dll
    *  opencv_legacy242.dll
    *  y cualquier otra librería de OpenCV que se utilice en el proyecto.
    .
  3. Copiar toda la carpeta /com/ dentro del directorio con tu código fuente. El mismo puede haber sido generado por cualquier IDE, pero sólo necesitas tener los archivos .java.
    .
    Los pasos hasta aquí:

    .
  4. Si en los archivos .java se ha especificado un package, deben editarse con el Notepad y sacarles la línea de package xxx;
    .
  5. Abrir una consola y tipear lo siguiente:
    cd c:\UbicacionDeTuProyecto
    javac *.java
    .
  6. Eso generará los archivos .class, ahora se deben incluir en el JAR:
    jar -cf NombreDeTuJAR.jar *.class com
    .
  7. Por último, firmar el applet (si no se generó previamente un keystore, realizar los tres pasos de ESTAS instrucciones, reemplazando con tus datos):
    jarsigner -keystore myKeyStore NombreDeTuJAR.jar me
    .
  8. Crear un html dentro de la carpeta de tu proyecto (UbicacionDeTuProyecto), que tenga algo similar a ésto:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html lang="en-US">
      <head></head>
     
      <body>
        <noscript>Esta página requiere JavaScript para su correcta visualización y operación.</noscript>
        <h1>Primer Applet</h1>
        <p>
            <applet
                width="1100"
                height="493"
                code="NombreDeTuClasePrincipal.class"
                archive="NombreDeTuJAR.jar"
                codebase="."
                >
            </applet>
        </p>
      </body>
    </html>
    .
  9. Guardamos, cerramos, doble click al HTML y... ¡Applet funcionando!


Resultado JavaCV con OpenCV 2.4.2 para Windows x86 y x64 listo para usar: http://www.mediafire.com/?9rkz2d67oih6b71