2012-02-03 2 views
0

Я разрабатываю короткое приложение с использованием оболочки OpenCV, JavaCV. Я попытался запустить базовый пример, и он без проблем работал на моем компьютере.Runnable JavaCV Project

Теперь я сталкиваюсь с проблемами, когда пытаюсь выполнить ту же программу на своем ноутбуке. OpenCV там не установлен, но двоичные файлы OpenCV включены в баннеры JavaCV, которые включены в мой файл jar.

Итак, мой вопрос в том, есть ли возможность создать исполняемый файл jar, который может быть выполнен в любой системе Ubuntu или Windows, где OpenCV не установлен.

Спасибо и наилучшими пожеланиями

Andreas

ответ

2

Да, но учитывая ограничения Java и С ++, а также по вопросам лицензирования от Microsoft, проще всего было бы связать статически все, что нужно в одной массивной библиотеке JNI, по одной на платформу. Это можно сделать, изменив каталоги в верхней части файла opencv_core.java и назовите их статическим libs, а также используя опцию JavaCPP -o myMassiveJNIlib (см. Файл build.xml JavaCV). В ваших приложениях перед вызовом JavaCV просто вызовите System.load ('путь/в/myMassiveJNIlib'). Мы также можем позвонить Loader.extractResource() по соответствующему файлу библиотеки, включенному в файл JAR (возможно, с именами файлов на основе Loader.getPlatformName()), чтобы извлечь его во временный файл, прежде чем называть System.load(). Это то, что JavaCPP делает автоматически для каждого класса, когда нам не нужно объединять все в один большой массивный файл.

EDIT: последние версии JavaCPP и JavaCV могут извлекать и загружать из собственных библиотек ресурсов, как показано FaceApplet sample. Больше не нужно связываться со статическими библиотеками.