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

Mac M1编译OpenCV获取libopencv_java490.dylib文件

Window OpenCV下载地址
https://opencv.org/releases/
OpenCV源码下载
https://github.com/opencv/opencv/tree/4.9.0
https://github.com/opencv/opencv_contrib/tree/4.9.0
OpenCV依赖
brew install libjpeg libpng libtiff cmake3 ant freetype
构建open CV
cmake -G Ninja \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \-DWITH_IPP=OFF \-DWITH_TBB=OFF \-DWITH_OPENCL=OFF \-DENABLE_NEON=OFF \-DCPU_BASELINE="" \-DCPU_DISPATCH="" \-DBUILD_opencv_dnn=OFF \-DBUILD_JAVA=ON \-DPNG_ARM_NEON_OPT=0 \-DBUILD_opencv_imgcodecs=ON \-DBUILD_opencv_ml=OFF \-DBUILD_LIST="core;java" \-DCV_DISABLE_OPTIMIZATION=ON \-DBUILD_opencv_python=OFF \-DOPENCV_EXTRA_MODULES_PATH=/Users/youshang/Downloads/opencv_contrib-4.9.0/modules \-DJAVA_AWT_INCLUDE_PATH=$JAVA_HOME/include \-DJAVA_AWT_LIB=$JAVA_HOME/lib/libjawt.dylib \-DJAVA_INCLUDE_PATH=$JAVA_HOME/include \-DJAVA_INCLUDE_PATH2=$JAVA_HOME/include/darwin \-DJAVA_JVM_LIBRARY=$JAVA_HOME/lib/server/libjvm.dylib \..
  • 注意-DCMAKE_OSX_ARCHITECTURES-DBUILD_LIST参数,仅仅是为了编译成功,里面缺了很多模块
  • 编译出来只能使用本地库,jar功能不全选择maven仓库下载替换
构建完成标志:

在这里插入图片描述

编译opencv
ninja
编译完成标志:

在这里插入图片描述

  • 编译opencv为了获取 libopencv_java490文件
  • 文件存放路径为:opencv-4.9.0/build/lib (不要使用构建成功的jar包,jar包单独下载)
  • libopencv_java490.dylib Mac依赖的 OpenCV本地库
  • opencv_java490.dll window依赖的OpenCV本地库
项目中集成OpenCV
配置libopencv_java490文件
  • libopencv_java490文件丢到 /usr/local/lib 目录下,在项目中加载OpenCV本地库
    static {// 加载 OpenCV 本地库System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}
  • idea添加VM options引用

    -Djava.library.path=/usr/local/lib
    

    在这里插入图片描述

配置openCV jar包
        <dependency><groupId>com</groupId><artifactId>opencv</artifactId><version>4.9.0</version><scope>system</scope><systemPath>${project.basedir}/libs/opencv-4.9.0-0.jar</systemPath></dependency>
异常信息:
no opencv_java490
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java490 in java.library.path: [/Users/youshang/Library/Java/Extensions, /Library/Java/Extensions, /Network/Library/Java/Extensions, /System/Library/Java/Extensions, /usr/lib/java, .]at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2678)at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)at java.base/java.lang.System.loadLibrary(System.java:1890)at com.rangertech.osc.video.utils.CameraCalibrationJava.<clinit>(CameraCalibrationJava.java:26)
  • 原因:未配置libopencv_java490所导致的
  • 解决方法:将libopencv_java490配置到-Djava.library.path= 读取的位置即可
long org.opencv.imgcodecs.Imgcodecs.imread_1(java.lang.String)
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'long org.opencv.imgcodecs.Imgcodecs.imread_1(java.lang.String)'at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method)at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:330)at com.rangertech.osc.video.utils.CameraCalibrationJava.calibration(CameraCalibrationJava.java:83)at com.rangertech.osc.video.utils.CameraCalibrationJava.main(CameraCalibrationJava.java:192)
  • 原因:有可能是jdk架构、libopencv_java490版本、libopencv_java490编译架构,不一致导致的

  • 解决方法:单独下载opencv jar包

    • 下载地址:https://repo1.maven.org/maven2/org/openpnp/opencv/4.9.0-0/

    • 在调用时主动加载OpenCV:

          public static void main(String[] args) {//加载openCVPrintVersion.main(args);CameraCalibrationDTO dto = new CameraCalibrationDTO();dto.setChessboardHeight(6);dto.setChessboardWidth(9);dto.setSquareSize(24.0);dto.setImagePaths(Lists.newArrayList("/Users/youshang/Downloads/Checkerboard.png"));CameraCalibrationJava.calibration(dto);}
      
zsh: command not found:
CMake Error: The source directory "/Users/youshang/Downloads/opencv-4.9.0/build/ " does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
zsh: command not found: -DBUILD_JAVA=ON
  • 原因:
    • CMake 提示找不到 …/opencv-4.9.0/build/ 目录,原因是路径末尾多了一个空格;
    • 终端报 “zsh: command not found: -DBUILD_JAVA=ON” 往往是因为换行符 \ 后面不小心留了空格,导致 shell 没把它当作续行符处理,接下来的参数被当成了新的命令。
http://www.xdnf.cn/news/690463.html

相关文章:

  • xcode 旧版本、历史版本下载
  • 【C/C++】高性能网络编程之Reactor模型
  • 网站缓存入门与实战:浏览器与Nginx/Apache服务器端缓存,让网站速度起飞!(2025)
  • git配置(1): 根据remote自动选择账号执行commit
  • MCU - SPI总线介绍 + W25Qx驱动设计
  • node-DeepResearch开源ai程序用于深入调查查询,继续搜索、阅读网页、推理,直到找到答案
  • SpringBoot项目快速打包与部署,War包⽅式打包部署与Jar包⽅式打包部署两种方式
  • 迁移学习模型构建指南(Python实现)
  • 云服务器系统盘满了,但是其他正常,是否可能是被攻击了
  • electron开发百度桌面应用demo及如何打包应用
  • SpringBoot 执行Lua脚本 服务端执行 减少性能损耗 优化性能 优化连接性能
  • linux使用服务添加一个开机启动脚本
  • 同一机器下通过HTTP域名访问其他服务器进程返回504问题记录
  • 服务器带宽线路的区别(GIA、CN2、BGP、CMI等)
  • Python教程(七)——错误和异常
  • Rust并发编程实践指南
  • Hadoop复习(一)
  • LVS-DR 负载均衡群集
  • LeetCode Hot100 (普通数组)
  • 深入解析 IP 代理:原理、应用场景与优化策略
  • ubuntu20.04安装NVIDIA显卡驱动(驱动官网下载安装包,解决开机启动黑屏问题,终极保姆式方案教程)
  • 51c~CUDA~合集1
  • Nginx内置变量及案例详解
  • 【mysql】-5 索引
  • 服务器tty2终端如何关机
  • WebAssembly 及 HTML Streaming:重塑前端性能与用户体验
  • 力扣100题---字母异位词分组
  • 力扣经典算法篇-16-最长公共前缀(顺序查找法,二分查找法,分治算法)
  • 学习率及相关优化参数详解:驱动模型高效训练
  • IP 风险画像技术略解