Так что я бы хотел немного поиграть с OpenCV.Мой тестовый проект на Java (ОС - Debian Linux 8.4), и я следовал этому руководству для сборки OpenCV: https://opencv -java-tutorials.readthedocs.io / en / latest / 01-Установка-OpenCV-для-java.html
После исправления нескольких проблем я смог успешно собрать файл OpenCV jar и т. д.Во время сборки не было ошибок или предупреждений.Я поместил opencv-400.jar и libopencv_java400.so в lib подпапку моего проекта.Добавлен jar-файл для построения пути в Eclipse и правильного пути к файлу so в конфигурациях сборки Eclipse.
В моем проекте есть только класс Main, который является примером, который я нашел в исходных кодах OpenCV, поэтому ничего сложного:
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
public class Main {
public static void main(String[] args) {
System.out.println("Welcome to OpenCV " + Core.VERSION);
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat m = Mat.eye(3, 3, CvType.CV_8UC1);
System.out.println("m = " + m.dump());
}
}
Все выглядит так, что все должно работать нормально, но когда я запускаю проект, я вижу следующее исключение:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/firzen/ownCloud/develop/java/workspace/CVExperiments/lib/libopencv_java400.so: /home/firzen/ownCloud/develop/java/workspace/CVExperiments/lib/libopencv_java400.so: undefined symbol: _ZNK6google8protobuf8internal12MapFieldBase28SpaceUsedExcludingSelfNoLockEv
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at Main.main(Main.java:9)
И эта часть исключения действительно вызывает у меня беспокойство:
/home/firzen/ownCloud/develop/java/workspace/CVExperiments/lib/libopencv_java400.so: undefined symbol: _ZNK6google8protobuf8internal12MapFieldBase28SpaceUsedExcludingSelfNoLockEv
Мне кажется, что с этим libopencv_java400.so файлом что-то не так.Я прав?Или мне нужны другие файлы, чтобы это работало?Я собрал OpenCV как Debug, так что файл имеет 135 МБ, но я думаю, что это не должно быть проблемой.
Я буду благодарен за любые идеи!