我正在尝试在树莓派上安装OpenCV,经过多次尝试配置cmake,已成功生成opencv-400.jar和libopencv_java400.so网络上的各种指南没有说明下一步要做什么。
我的类路径中有 jar,测试代码编译正常,并打印出 System.getProperty("java.library.path")
包括包含 .so 文件的目录。在另一个目录/usr/local/lib 中,make 进程放置了一堆 .a 文件。 cmake 指令表示,通过使库不共享,所需的部分将全部放入 java .so 文件中。我不确定这是否有意义?我还必须指定/usr/local 作为构建前缀 - 也许这应该是 pi 上的其他内容?
The line System.loadLibrary("opencv_java400") produces an unadorned Segmentation fault.
...当然不应该。如果有人将 rpi 相机连接到 opencv 并从 java 访问它,也许您可以共享 cmake 参数。
最佳答案
恢复到 opencv 3.3.0 后,我不需要弄清楚 cmake,我让 opencv 使用 c++ 在 pi 上工作。然后我将所需的 opencv 命令包装在 JNI 中......但仍然出现段错误。然后我学会了使用 gdb 并很快将错误跟踪到 libopenmpt。快速搜索表明,这会在内存不足时导致段错误。
这种情况下的解决方案是运行 java -Xss128m ...
来运行我的代码。
我猜测,这是使用内置 java 组件中的 opencv 4 的修复程序。
关于java - rpi 上的 OpenCV - System.loadLibrary 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56239782/