【问题标题】:OpenCV on rpi - segmentation fault in System.loadLibraryrpi 上的 OpenCV - System.loadLibrary 中的分段错误
【发布时间】:2019-05-21 13:48:28
【问题描述】:

我正在尝试在树莓派上安装 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 上的其他内容?

System.loadLibrary("opencv_java400") 行会产生一个简单的分段错误。

...它当然不应该。如果有人将 rpi 摄像头连接到 opencv 并从 java 访问它,也许您可​​以共享 cmake 参数。

【问题讨论】:

  • 使用 -D BUILD_SHARED_LIBS=OFF vs. 的许多不同组合再次启动 cmake 过程-U BUILD_SHARED_LIBS 以“取消设置”参数,以及空格/无空格、大写/小写的组合,并且仍然在屏幕上的 cmake 输出中显示“链接库:动态加载”的行,所以它看起来好像我未能在我的 libopencv_java400.so 文件中获取所需的库。
  • 事实证明,除非您重新编译 ffmpeg,否则 opencv 不会在 java 下的树莓派上运行:github.com/opencv/opencv/issues/10157 的工作是不使用 ffmpeg 访问摄像头....更多后续...
  • 不,输入或输出 ffmpeg 没有区别。我自己无法对其进行排序,并且在 opencv 论坛和 rpi 论坛上也没有任何帮助。我要放弃了。

标签: java opencv raspberry-pi


【解决方案1】:

在恢复到 opencv 3.3.0 之后,我不需要弄清楚 cmake,我让 opencv 使用 c++ 在 pi 上工作。然后,我将所需的 opencv 命令包装在 JNI 中……但仍然出现分段错误。然后我学会了使用 gdb 并很快将错误追溯到 libopenmpt。快速搜索说这会在内存不足时导致分段错误。

这种情况下的解决方案是运行java -Xss128m ... 来运行我的代码。

我猜,这是从构建的 java 组件中使用 opencv 4 的修复程序。

【讨论】:

    猜你喜欢
    • 2015-05-12
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多