linux环境编译 OpenCV 并生成 Java 依赖的 opencv_java451.so 文件

582 阅读1分钟

1. 前言

在java项目使用opencv除了需要引入相关的POM依赖,还需要加载库文件:

  • Windows环境是opencv_java451.dll
  • Linux环境下是opencv_java451.so 本文主要介绍如何编译opencv获取相关库文件;

2. 环境说明:

  • 操作系统:Win11/Centos stream 9
  • JDK:1.8.0
  • opencv: 4.5.1 (可以在下载相关文件时自行选择版本)

3. windows 编译获取opencv_java451.dll:

3.1 到opencv官网下载对应版本的文件:

opencv下载地址

3.2 安装windows版本,提取依赖包

点击执行opencv-4.5.1-vc14_vc15.exe提取文件,到opencv\build\java\x64目录获取opencv_java451.dll文件

4. linux环境编译openCV获取依赖opencv_java451.so

4.1.安装依赖项

sudo yum install -y epel-release
sudo yum groupinstall -y "Development Tools"
sudo yum install -y cmake3 git gtk2-devel libpng-devel libjpeg-devel libtiff-devel \
jasper-devel openexr-devel webp-devel tbb-devel eigen3-devel python3-devel \
gstreamer-plugins-base-devel freeglut-devel mesa-libGL mesa-libGL-devel ant

4.2. 下载 OpenCV 源码(根据自己需要的版本进行下载)

wget -O opencv-4.5.1.zip https://github.com/opencv/opencv/archive/4.5.1.zip
wget -O opencv_contrib-4.5.1.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zip
unzip opencv-4.5.1.zip
unzip opencv_contrib-4.5.1.zip

4.3. 配置 CMake

mkdir -p build && cd build
cmake3 -D CMAKE_BUILD_TYPE=RELEASE \
       -D CMAKE_INSTALL_PREFIX=/usr/local \
       -D OPENCV_GENERATE_PKGCONFIG=ON \
       -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.1/modules \
       -D BUILD_opencv_java=ON \
       -D BUILD_opencv_java_bindings_generator=ON \
       -D BUILD_SHARED_LIBS=ON \
       -D BUILD_STATIC_LIBS=OFF \
       -D WITH_GTK=ON \
       -D WITH_OPENGL=ON \
       ../opencv-4.5.1

找到java相关的输出,ant,java等信息正确配置即可:

--   Java:                          
--     ant:                         /bin/ant (ver 1.10.9)
--     JNI:                         /usr/lib/jvm/java/include /usr/lib/jvm/java/include/linux /usr/lib/jvm/java/include
--     Java wrappers:               YES
--     Java tests:                  YES

4.4. 编译

# 只编译java依赖包
make -j$(nproc) opencv_java

# 编译全部(无需执行)
# make -j$(nproc)

输出如下,表示编译成功:

[100%] Linking CXX shared module ../../../lib/libopencv_java451.so
[100%] Built target opencv_java

依赖库在如下目录:

[build]# ll lib/libopencv_java451.so 
-rwxr-xr-x. 1 root root 2771808  2月 18 14:26 lib/libopencv_java451.so