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

Window OpenCV下载地址
basic 复制代码
https://opencv.org/releases/
OpenCV源码下载
shell 复制代码
https://github.com/opencv/opencv/tree/4.9.0
https://github.com/opencv/opencv_contrib/tree/4.9.0
OpenCV依赖
shell 复制代码
brew install libjpeg libpng libtiff cmake3 ant freetype
构建open CV
shell 复制代码
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
shell 复制代码
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本地库
java 复制代码
    static {
				// 加载 OpenCV 本地库
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }
  • idea添加VM options引用

    复制代码
    -Djava.library.path=/usr/local/lib
配置openCV jar包
xml 复制代码
        <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
java 复制代码
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)
bash 复制代码
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:

      bash 复制代码
          public static void main(String[] args) {
      
              //加载openCV
              PrintVersion.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:
bash 复制代码
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 没把它当作续行符处理,接下来的参数被当成了新的命令。
相关推荐
unity工具人2 小时前
python+yolov8 图像识别-测试案例
python·opencv·yolo
小小程序员mono2 小时前
WWDC 2026 之后,M5 桌面 Mac 上市时间预测
macos·ios·wwdc
yuguo.im3 小时前
Mac M4 安装 sd-webui 踩坑全记录
macos·stable diffusion
CV-deeplearning3 小时前
NVIDIA CV-CUDA:GPU 全流程加速计算机视觉,pip 一键安装替代 OpenCV,微软/腾讯/百度/字节全在用,云级图像处理吞吐量飙升 10 倍
opencv·计算机视觉·pip·nvidia·cuda·gpu加速·cv-cuda
Together_CZ4 小时前
OpenCV 5.0 重磅发布:全面技术深度解析
图像处理·人工智能·opencv·计算机视觉·llm·dnn·推理
2401_885665194 小时前
从神经元到BP反向传播,零基础吃透神经网络底层原理
人工智能·python·深度学习·神经网络·opencv
守城小轩4 小时前
Chromium 146 编译指南 macOS篇:获取源代码(四)
macos
comcoo5 小时前
避坑指南:OpenClaw v2.7.9 Windows/macOS 零基础安装全过程
人工智能·windows·macos·github·开源软件·open claw·open claw部署包
闻道且行之5 小时前
Hair Segmentation:MediaPipe 头发分割模块 CMake 独立编译
c++·人工智能·深度学习·神经网络·opencv·计算机视觉
天天代码码天天5 小时前
用 OpenCV 5 DNN 跑 PP-OCR:一个适合新手学习的 C++ 动态库 + C# 可视化测试项目
opencv·ocr·dnn·opencv5·ppocrv6