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

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

可能出现的问题

  1. Ant未找到:使用 sudo apt install ant 命令下载ant
  2. jdk版本兼容问题:在编译之前确保虚拟机上的jdk与目标opencv的版本是相互兼容的

相关文章:

  • SpringBoot实现的后端开发
  • 【计算机视觉】CV实战项目 -深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案
  • 数值数据处理的黄金法则:构建高质量机器学习模型的基石‌
  • per-task affinity 是什么?
  • 思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)
  • 配置文件的四级分类
  • 在Mybatis中为什么要同时指定扫描mapper接口和 mapper.xml 文件,理论单独扫描 xml 文件就可以啊
  • 数字IC后端实现教程之InnovusICC2添加Tie High/Low cell脚本
  • 4月25日日记(补)
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-前端美化滚动条问题
  • 桌面端开发技术栈选型:开启高效开发之旅
  • Eigen库编译
  • BT152-ASEMI机器人率器件专用BT152
  • Graphpad Prism10.1.2 中文版科学绘图软件 安装包下载
  • c#简易超市充值卡程序充值消费查余额
  • autodl(linux)环境下载git-lfs等工具及使用
  • 数字技术驱动下教育生态重构:从信息化整合到数字化转型的路径探究
  • 在Windows11中配置Git+SSH环境,本此实践使用Gitee(码云),方法同样适用于其它绝大部分Git服务
  • 2.3java运算符
  • C/C++ 头文件包含机制:从语法到最佳实践
  • 谁将主导“视觉大脑”?中国AI的下一个超级赛道
  • 持续更新丨伊朗官员:港口爆炸事件已致5人死亡
  • 铜钴巨头洛阳钼业一季度净利润同比大增九成,最新宣布首度进军黄金矿产
  • 网贷放款后自动扣除高额会员费,多家网贷平台被指变相收取“砍头息”
  • 商务部:美方应彻底取消所有对华单边关税措施
  • 消费补贴政策力度最大的一届!第六届上海“五五购物节” 4月底启幕