编译环境
系统内核
$ uname -a
4.19.90-52.39.v2207.ky10.aarch64 #4 SMP Wed Jun 5 15:52:50 CST 2024 aarch64 aarch64 aarch64 GNU/Linux
Java
$ java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment Bisheng (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM Bisheng (build 25.312-b07, mixed mode)
ant
$ ant -version
Apache Ant(TM) version 1.10.15 compiled on August 25 2024
Java
编译安装需要安装并配置 java 环境变量,在这里跳过安装,讲下配置环境变量,以我的 java 安装目录为:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-10.ky10.aarch64
为例子:
在 /etc/bash.bashrc 中写入以下配置:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-10.ky10.aarch64
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
刷新配置
source /etc/bash.bashrc
配置文件说明
sudo vim ~/.bashrc (这是各个用户目录下的配置)
sudo vim /etc/bash.bashrc (根用户的配置,我们需要把环境变量配置在这里,所有的用户都可以读取)
sudo vim /etc/profile (这是ubuntu下的配置,opencv的脚本读不到)
提示:经过我的测试,麒麟系统在/etc/profile下配置同样生效,刷新配置记得使用 :
source /etc/profile
验证
在控制台输入:
echo $JAVA_HOME
正确输出你的 java 的安装环境即可
ant
编译同时需要依赖于 ant 环境,先通过 ant -version 检查有没有安装,没有安装的情况下通过一下方式安装 ant
下载
下载地址:https://ant.apache.org/bindownload.cgi

以下载 apache-ant-1.10.15-bin.zip 为例,上传到 /usr/local/ant 中并解压:
unzip apache-ant-1.10.15-bin.zip
安装
解压后就安装好了,开箱即用
配置ant环境变量
在 /etc/profile 中加入以下代码:
export ANT_HOME=/usr/local/ant
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
刷新环境变量
source /etc/profile
验证
在终端输入 ant -version 能正确打印 ant 版本即表示正确安装
准备工作
上面的 java 和 ant 配置好了以后现在开始进行编译 opencv 生成想关的共享库
下载OpenCV源码
wget -O https://github.com/opencv/opencv/archive/4.1.2.zip
将源码下载到 /usr/local/opencv 中,并通过 unzip opencv-4.1.2.zip 命令解压出来,进入到源码目录并创建 build 目录
cd opencv-4.1.2
mkdir build
cd build
cmake
在 build 目录下运行以下命令进行编译以产生对应的 opencv-*.jar 和共享库 libopencv_java.so
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv \
-D BUILD_TESTS=OFF \
-D BUILD_opencv_java=ON \
-D BUILD_JAVA=ON \
-D WITH_JAVA=ON \
..
参数说明
CMAKE_INSTALL_PREFIX:编译安装的目录,默认 /usr/local,本次仅编译不安装
运行以上的 cmake 命令将会出现以下输出:
-- OpenCV modules:
-- To be built: calib3d core dnn features2d flann highgui imgcodecs imgproc java ml objdetect photo stitching ts video videoio
-- Disabled: world
-- Disabled by dependency: -
-- Unavailable: gapi js python2 python3
-- Applications: perf_tests apps
-- Documentation: NO
-- Non-free algorithms: NO
-- Java:
-- ant: /usr/local/ant/bin/ant (ver 1.10.15)
-- JNI: $JAVA_HOME/include $JAVA_HOME/include/linux $JAVA_HOME/include
-- Java wrappers: YES
-- Java tests: NO
--
-- Install to: /usr/local/opencv
如果在输出中看到 java 项出现在编译队列中且 java 编译选项中ant, JNI和Java wrappers 能够被识别,那么恭喜你配置生效了,就可以进行下一步编译
编译
采用多线程编译,执行以下命令:
make -j$(nproc)
验证
在编译完成后在 build 目录下的 lib 文件夹内有编译产物:libopencv_java412.so
$ find libopencv_ja*
libopencv_java412.so
可以看到正确编译并产生了 java 共享库文件 libopencv_java412.so