Использование OpenCV в Java с Javacv
Вопрос
Я отчаянно получаю !! Я пытаюсь использовать OpenCV в Джава, через Javacv (JNA, чтобы обернуть OpenCV для Java).
Я включен Mac OS X 1.5.
Я установил OpenCV, и я могу скомпилировать и запустить примеры. Так что это работает.
Теперь я открываю Затмение, и я создаю новый проект, как описано здесь:http://code.google.com/p/javacv/
В этом новом проекте только один маленький класс с вызовом функции OpenCV (я использовал пример кода):
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);
// ...
}
}
}
Когда я запускаю его, у меня есть следующая ошибка:
Исключение в потоке "Main" java.lang.unsatisfiedlinkerror: невозможно загрузить библиотеку 'cxcore': dlopen (libcxcore.dylib, 9): изображение не найдено
Пожалуйста, мне нужна помощь, я часами просматривал Google, я больше не знаю, где искать.
Решение
Оказалось, что версия SVN не была совместима с Javacv.
Я загрузил последнюю официальную версию (2.1) и собрал ее и установил, и она работает.
Другие советы
Вам нужно связать эти две библиотеки:
- javacpp.jar
- javacv.jar
В javacv/lib-opencv/win_x86_64 у вас должны быть файлы вашего подобного:
- msvcp100.dll
- msvcr100.dll
- opencv_core220.dll
- opencv_calib3d220.dll
- ...
Эти DLL должны быть скомпилированы для вашей платформы (Win 32 / Win 64 / Linux / и т. Д.
Вы должны определить путь к своим файлам OPNECV DLL:
-Djava.library.path=lib-opencv/win_x86_64/
- or the DLLs have to be somewhere in your system PATH of your operating system
Я некоторое время смотрел на эту проблему, так как OP предполагает, что всевозможные проблемы начинают заполняться из дерева. Я прошел тонну постов Stackoverflow, чтобы иметь возможность придумать относительно безболезненный опыт создания проекта OpenCV в Java. Я прошел через Javacv и обнаружил, что он не удовлетворял мои потребности. Однако я смог напрямую реализовать функциональность, упомянутые в сообщениях OpenCV (посты C ++), но на языке Java, когда я использовал определенные версии Javacpp. У меня также была тонна проблем с компиляцией, так как Javacpp зависит от составленных библиотек C ++, которые должны быть родными для окружающей среды, в которой находится пользователь (то, с чем люди живут в Java Land Love, чтобы не иметь дело). В любом случае, я смог построить и окружать с Maven. Я использую Eclipse, но это должно прекрасно работать с другими средами программирования. Я поставил пример проекта, чтобы проиллюстрировать, как начать создавать проект начальной загрузки и начать работу. Проект сравнивает 2 изображения, учитывая их URL. Это тест на равенство, увязчивая изображения идентичны или нет. Надеемся, что это может помочь людям настроить и работать в этой среде и избежать тонн и тонн ловушек, с которыми я сталкивался при попытке работать с OpenCV в Java (я был в том же месте, что и OP на умственном смысле в то время :)).