当前位置: 首页 > news >正文

opencv sdk for java中提示无stiching模块接口的问题

1、问题介绍

安卓项目中有新的需求,在 jni 中增加 stiching_detail.cpp 中全景拼接的实现。

但是在编译时,出现大量报错,如下截图所示

在这里插入图片描述

实际上,其他opencv的接口函数 例如 core dnn等都能正常使用,直觉上初步怀疑 opencv_java4.so 中未导出stiching模块的相关库函数符号

2、问题排查

直接对比 x86_64 和 android 两个平台的库函数关于stiching中函数的符号导出情况,以computeImgerFeatures为例说明,

windows上使用vs的 dumpbin 命令 dumpbin /EXPORTS opencvstiching420.lib | findstr /r “computeImgerFeatures”查看,如下,能查找到:
在这里插入图片描述
接着wsl linux下使用 nm 命令, nm -D libopencv_java4.so | grep computeImgerFeatures 结果为空, nm -D libopencv_java4.so | grep compute 结果中并没有我们期望的结果。
在这里插入图片描述

结论:以动态库方式引入opencv_java4.so,未导出stiching模块相关库函数符号导致链接提示未定义符号

我们在opencv github issues中也看到有关解释,同时也给出了问题答案:
在这里插入图片描述

3、问题解决

为了使用stiching模块的库函数,需要使用对应的静态库 libopencv_stiching.a

3.1、仅使用静态库

这种方式,仅适合项目中直接加载编译jni cpp代码使用。

find_package(OpenCV 4.10 REQUIRED opencv_core opencv_imgcodecs opencv_dnn opencv_calib3d opencv_stitching)target_link_libraries(${target}${log-lib}${OpenCV_LIBRARIES}
)

3.2、动静混用

这种方式,适合于编译aar包或者jar包之后,提供给其他项目导入使用。 由于其他项目不可避免使用java 的oepncv接口,也需要导入使用 libopencv_java4.so 文件,因此为例避免代码膨胀,使用混合加载方式。

find_package(OpenCV 4.10 REQUIRED java opencv_stitching)target_link_libraries(${target}${log-lib}${OpenCV_LIBRARIES}
)
http://www.lryc.cn/news/509266.html

相关文章:

  • 今天最新早上好问候语精选大全,每天问候,相互牵挂,彼此祝福
  • 五种IO模型- 阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO
  • Vscode GStreamer插件开发环境配置
  • flask基础
  • Java日志框架:log4j、log4j2、logback
  • 鸿蒙-expandSafeArea使用
  • 【es6复习笔记】Spread 扩展运算符(8)
  • 第22天:信息收集-Web应用各语言框架安全组件联动系统数据特征人工分析识别项目
  • 后端-redis
  • 开发场景中Java 集合的最佳选择
  • golangci-lint安装与Goland集成
  • 金仓数据库安装-Kingbase v9-centos
  • 条款6:auto推导若非己愿,使用显式类型初始化惯用法
  • 蓝桥杯物联网开发板硬件组成
  • 视频汇聚融合云平台Liveweb一站式解决视频资源管理痛点
  • (aaai2025) FD2-Net: Frequency-Driven Feature Decomposition Network
  • 深度学习之目标检测——RCNN
  • 2014年IMO第3题
  • 国高材服务 | 高分子结晶动力学表征——高低温热台偏光显微镜
  • 跨站请求伪造之基本介绍
  • Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)
  • 单元测试(UT,C++版)经验总结(gtest+gmock)
  • Mysql高级部分总结(二)
  • 纠正一下网络管理
  • homebrew,gem,cocoapod 换源,以及安装依赖
  • Java字符串的|分隔符转List实现方案
  • Kafka可视化工具 Offset Explorer (以前叫Kafka Tool)
  • DeepWalk 原理详解
  • GitLab安装|备份数据|迁移数据及使用教程
  • 嵌入式linux驱动框架 I2C系统驱动程序模型分析