Ubuntu编译opencv源码
准备
- Ubuntu版本:22.04
- opencv版本:4.9.0
- 没下载Ubuntu镜像的可以在清华镜像下载
本文以4.9.0版本演示,可根据自身情况选择
安装JDK和依赖项
本次编译主要为了获取java在linux环境下的动态库,所以需要在虚拟机上下载jdk
# 安装JDK17
sudo apt update
sudo apt install openjdk-17-jdk openjdk-17-jre# 验证jdk版本
# 显示版本及工作路径则表示安装成功
java --version# 设置JAVA_HOME
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> ~/.bashrc
source ~/.bashrc
安装构建工具和依赖项
# 安装基础依赖项
sudo apt install build-essential cmake pkg-config unzip# 安装git,用于在ubuntu上拉取源码
sudo apt install git# 安装java绑定依赖(Ant)
sudo apt install ant# 安装图像/视屏库
sudo apt install libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt install libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev
下载Opencv源码
本文的Opencv源码使用git拉取,也可以去官网下载
# 下载源码压缩包
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.9.0.zip# 解压
unzip opencv.zipcd opencv-4.9.0# 创建build文件夹并进入它
mkdir build && cd build
配置CMake
cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \-D OPENCV_JAVA_INSTALL_PATH="lib" \-D BUILD_SHARED_LIBS=OFF \-D WITH_GTK=ON \-D BUILD_opencv_java=ON \-D ANT_EXECUTABLE=/usr/bin/ant \-D JAVA_INCLUDE_PATH=$JAVA_HOME/include \-D JAVA_AWT_INCLUDE_PATH=$JAVA_HOME/include/linux ..
- BUILD_opencv_java 开启java 绑定
- JAVA_INCLUDE_PATH 指向JDK的include目录
- ANT_EXECUTABLE 确保CMake能够找到Ant
编译和安装
# 编译(根据CPU核心数调整)
make -j$(nproc)# 将opencv安装到系统目录
sudo make install
完成上述指令即可将opencv安装到Ubuntu。
获取生成的java文件
编译完成后,在build/bin
目录下会生成:
- JAR文件:opencv-490.jar
- 动态库:libopencv_java490.so
在SpringBoot项目中使用
在SpringBoot中导入了opencv的依赖之后,启动项目是需要opencvd的动态库的
# 启动SpringBoot程序时使用 -Djava.library.path 指定动态库的路径
java -Djava.library.path=/path/to/opencv-4.9.0/build/lib -jar YourApp.jar
可能出现的问题
- Ant未找到:使用
sudo apt install ant
命令下载ant - jdk版本兼容问题:在编译之前确保虚拟机上的jdk与目标opencv的版本是相互兼容的