Я полностью потерян:
Библиотеки org.bytedeco.opencv.opencv_core
и org.opencv.core
- это библиотеки Java bridge , которые позволяют вызывать собственную библиотеку OpenCV.
Библиотеки Java генерируются из заголовочных файлов C / C ++ для библиотеки OpenCV.Например, сайт bytedeco.org , версия которого используется с помощью инструмента JavaCPP .
1) Почему два разных API?
Потому что две группы решили сделать это!Очевидно, что не так много работы для генерации Java-кода.
Почему две группы решили сделать то же самое?Pass.
Какой из них использовать?
Вопросы с рекомендациями не относятся к теме StackOverflow, поэтому я не буду их давать.
Прагматичный ответ - использовать тот, который работает для вас, но вы также можете попытаться выяснить, что другой не работает.
Возможно, вам следует рассмотреть версиюOpenCV API, который вы хотите использовать, и есть ли библиотеки мостов для этой версии от соответствующих поставщиков.
Почему org.opencv.core
выдает исключение, когда org.bytedeco.opencv.opencv_core
работает?
Обе версии библиотеки должны быть связаны с собственной библиотекой OpenCV.Эта ссылка не работает для org.opencv.core
на вашей платформе исполнения.Для этого есть несколько возможных причин:
Одна из библиотек opencv
имеет встроенную копию библиотеки, а другая - нет.(Посмотрите, что находится внутри соответствующих JAR-файлов, и сравните их с тем, что говорится в этом Q & A о том, как встраивать нативные библиотеки: Как связать нативную библиотеку и библиотеку JNI в JAR? .)
Ни один из файлов JAR не содержит встроенную библиотеку, но в вашем исполнении уже установлена соответствующая версия библиотеки.Неудачная версия ищет файл с именем "opencv_java410".