Linux环境下编译并使用java_opencv

这篇具有很好参考价值的文章主要介绍了Linux环境下编译并使用java_opencv。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

java_opencv windows环境下很好部署使用,官网直接有一键安装版,所以这里就不提了,主要说说这个linux环境下,哎,一堆坑,踩了好几天.

1.环境准备

1.1 cmake

  • 安装编译环境
yum -y install gcc gcc-c++ openssl openssl-devel tar
  • 下载源码
    版本自己可以去官网选择,我这里是觉得没必要整那么高的版本
wget https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2.tar.gz```
tar -zxf cmake-3.16.2.tar.gz
  • 编译安装
./bootstrap --prefix=/usr --datadir=share/cmake --docdir=doc/cmake && make -j8
make install

这一步巨慢,不加 -j8巨巨慢,自己的机器有几核就-j几核心,量力而为;

  • 安装检查
    cmake --version

1.2 ant

调jni的SDK的jar包是通过ant编译,所以,需要装这个东西
yum -y install ant
装完以后,你会发现他会给你装个jdk1.8,建议卸载掉

1.3 JAVA_HOME

这玩意儿一定要配,不然不会生成所需的jar包,而且必须是手动配置,即手写入profile文件里的,
所以建议,下载压缩包,手动配置的方式安装jdk
安装之前先卸载掉已经安装的jdk版本,如果已经有了自己手动配置的java_home,这一步可以跳过;
rpm -qa | grep jdk
java opencv linux,java,java,linux,opencv
我这里只装jdk11,执行命令卸载掉
rpm -e --nodeps java-11-openjdk-headless-11.0.15.0.9
rpm -e --nodeps java-11-openjdk-devel-11.0.15.0.9
rpm -e --nodeps java-11-openjdk-11.0.15.0.9
剩下的就是标准的linux jdk安装步骤了,可以去网上找一篇对着安装.

2.opencv安装

  • 下载基本包与拓展包
    wget -O opencv-4.5.5.tar.gz https://github.com/opencv/opencv/archive/refs/tags/4.5.5.tar.gz
    wget -O opencv_contrib-4.5.5.tar.gz https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.5.tar.gz

  • 解压
    tar -zxvf opencv-4.5.5.tar.gz
    tar -zxvf opencv_contrib-4.5.5.tar.gz

  • 构建
    cd ./opencv-4.5.5
    mkdir build && cd build

#开始构建
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=/home/admin/opencv_contrib-4.5.5/modules -D ENABLE_CXX11=ON -D WITH_1394=OFF -D BUILD_opencv_xfeatures2d=OFF -D BUILD_SHARED_LIBS=OFF -D BUILD_TESTS=OFF ..
cmake的参数说明:
-D CMAKE_BUILD_TYPE=RELEASE编译发布版本
-D CMAKE_INSTALL_PREFIX=/usr/local编译后的安装主目录
-D OPENCV_GENERATE_PKGCONFIG=ON这个是为了C++引用的,可以忽略
-D OPENCV_EXTRA_MODULES_PATH=/home/admin/opencv_contrib-4.5.5/modules这个就是附加模块路径,这个地址需要自定义
-D ENABLE_CXX11=ONC++版本支持
-D WITH_1394=OFF这个好像要加些依赖,关掉。不关也没关系
-D BUILD_opencv_xfeatures2d=OFF这里要重点说一下,在附件模块opencv_contrib-4.5.5/modules里面有很多目录,如果有些你不想要就关掉。比如xfeatures2d这个就导致我编译不过,我又不用,直接关掉。
-D BUILD_SHARED_LIBS=OFF这个重点说,就是让依赖库变成一个SO而不是很多SO。这个SO就是java的jni要用的。
-D BUILD_TESTS=OFF关掉测试,提高编译效率,减少时间。编译太长时间了。。。。。
… 后面两个点不要忘记了
注意要关注日志(我没截图,拿了网上的图)
java opencv linux,java,java,linux,opencv

这里是你关掉的模块
java opencv linux,java,java,linux,opencv

这里是你排除的模块
java opencv linux,java,java,linux,opencv

这俩一定要注意,必须要有的,如果没有,就是ant没有安装成功,或者java_home不对,如果没有就不会生成所需的依赖包

  • 编译
    make -j8 #这一步巨慢,不加多核编译的话,可能需要几十分钟
    make install
  • 完成
    在/usr/local/share/java/opencv4目录下会有我们所需的jar包与so库文件,如果没有,那就删了build文件,重新构建编译吧

3.项目使用

  • 为了同时兼容windows与linux,需要引入依赖
<dependency>
   <groupId>org.openpnp</groupId>
   <artifactId>opencv</artifactId>
   <version>4.5.5-1</version>
</dependency>
  • 初始化依赖
@PostConstruct
public void init() {
    try {
		//获取当前系统
        String osName = System.getProperties().getProperty("os.name");
        if ("Linux".equalsIgnoreCase(osName)) {
            System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        } else {
            nu.pattern.OpenCV.loadShared();
	      System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

也可以在静态代码块里初始化
启动下吧,不报错就是加载成功了!
如果程序说找不到包的话,可以把/usr/local/share/java/opencv4目录下的文件复制到/usr/lib/下
最后附上DockerFile文件,因为我是docker部署的

FROM centos
WORKDIR /home/admin

#下载jdk11
RUN wget https://download.oracle.com/otn/java/jdk/11.0.17+10/8bd089539add49a9b99e2f27eb0c4329/jdk-11.0.17_linux-x64_bin.tar.gz?AuthParam=1667384513_084b3d888e18c6459482084546b57037
#重命名jdk名称
RUN rename jdk-11.0.17_linux-x64_bin.tar.gz?AuthParam=1667384513_084b3d888e18c6459482084546b57037 jdk-11.0.17_linux-x64_bin.tar.gz jdk-11.0.17_linux-x64_bin.tar.gz?AuthParam=1667384513_084b3d888e18c6459482084546b57037

#安装必要的
RUN yum -y install gcc gcc-c++ openssl openssl-devel tar
RUN wget https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2.tar.gz
RUN tar -zxf cmake-3.16.2.tar.gz
WORKDIR cmake-3.16.2
RUN ./bootstrap --prefix=/usr --datadir=share/cmake --docdir=doc/cmake && make -j8
RUN make install
WORKDIR /home/admin

##安装ant
RUN yum -y install ant
#
##卸载当前系统的jdk
RUN rpm -e --nodeps java-1.8.0-openjdk-devel-1.8.0.352.b08
RUN rpm -e --nodeps java-11-openjdk-11.0.15.0.9
RUN rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.352.b08
RUN rpm -e --nodeps java-1.8.0-openjdk-1.8.0.352.b08
RUN rpm -e --nodeps java-11-openjdk-headless-11.0.15.0.9
RUN rpm -e --nodeps java-11-openjdk-devel-11.0.15.0.9
##解压
RUN tar -zxvf jdk-11.0.17_linux-x64_bin.tar.gz
##配置java_home
ENV JAVA_HOME /home/admin/jdk-11.0.17
RUN echo -e "export JAVA_HOME=/home/admin/jdk-11.0.17\n" >> /etc/profile
RUN echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile
RUN echo -e "\n" >> /etc/profile
RUN echo "export CLASSPATH=$JAVA_HOME/lib" >> /etc/profile

RUN echo "source /etc/profile" >> ~/.bashrc
#source
RUN source /etc/profile
#设置javahome,以防万一
RUN export JAVA_HOME=/home/admin/jdk-11.0.17

#下载openvc包
RUN wget -O opencv-4.5.5.tar.gz https://github.com/opencv/opencv/archive/refs/tags/4.5.5.tar.gz
RUN wget -O opencv_contrib-4.5.5.tar.gz  https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.5.tar.gz
#解压
RUN tar -zxvf opencv-4.5.5.tar.gz
RUN tar -zxvf opencv_contrib-4.5.5.tar.gz
#切到opencv下
WORKDIR ./opencv-4.5.5
#创建build
RUN mkdir build
WORKDIR build
#开始构建
RUN cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=/home/admin/opencv_contrib-4.5.5/modules -D ENABLE_CXX11=ON -D WITH_1394=OFF -D BUILD_opencv_xfeatures2d=OFF -D BUILD_SHARED_LIBS=OFF -D BUILD_TESTS=OFF ..
#开始编译
RUN make -j8
RUN make install

#删除无用的包
WORKDIR /home/admin
RUN rm -rf cmake-3.16.2.tar.gz
RUN rm -rf jdk-11.0.17_linux-x64_bin.tar.gz
RUN rm -rf opencv-4.5.5.tar.gz
RUN rm -rf opencv_contrib-4.5.5.tar.gz
ENV JAVA_HOME /home/admin/jdk-11.0.17

WORKDIR /home/admin

RUN cp /usr/local/share/java/opencv4/* /usr/lib/
RUN echo "source /etc/profile" >> /etc/bashrc
WORKDIR /home/admin

参考文档

官方安装教程
官方java_opencv环境配置
java在linux下编译使用opencv
CentOS 7 源码安装 CMake 3.16.2 最新稳定版文章来源地址https://www.toymoban.com/news/detail-649062.html

到了这里,关于Linux环境下编译并使用java_opencv的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在linux环境下编译运行OpenCV程序的两种方法

    原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了。 在谷歌和上StackOverFlow查看相关问题解答之后,我下面就介绍Command Line和CMake两种方式。 首先我先粘上我测试的代码吧,文件名为

    2024年02月16日
    浏览(25)
  • 【Spark实战】Windows环境下编译Spark2 Linux上部署Spark On Yarn

    环境准备 git-2.14.1 maven-3.9.2 jdk-1.8 scala-2.11.8 zinc-0.3.15 主下载地址 spark-2.3.4 github官方地址 编译准备 maven远程仓库使用的是阿里云的 解压源码包 spark-2.3.4.zip ,修改根模块的pom文件。主要目的是为了变更hadoop的版本号,默认是 2.6.5 。 修改 spark-2.3.4devmake-distribution.sh 文件 主要是

    2024年02月13日
    浏览(46)
  • Windows环境下编译OpenOCD

    1、安装git for windows sdk 下载地址:Git for Windows  ps:如果安装失败,需要将安装目录删除后才能重新安装。 2、打开 Git SDK 64-bit,安装编译所需环境 pacman -S mingw-w64-x86_64-toolchain git make libtool pkg-config autoconf automake texinfo wget 此处直接按回车  此处按Y,按回车  显示安装成功,如

    2024年02月13日
    浏览(51)
  • WINDOWS 环境下编译 OLLVM 替换到 NDK 环境

    这里使用的是 AGP 7.2.2 、 NDK 25.2.9519653 、 llvm 14.0.7 、 cmake 3.22.1 、 python39 git 用来下载源码 python 搞到这一步环境变量里应该已经有python了吧 NDK AGP 的 7.2.2 版本默认使用的 NDK 版本为 21.4.7075529 ,对应的 LLVM 为 9.0.9 。 需要根据实际情况选择 NDK 对应的 LLVM 版本,编译 OLLVM,LLV

    2024年02月16日
    浏览(32)
  • 如何在windows环境下编译T

    一, 安装MYSYS2  1. 去https://www.msys2.org下载 msys2-x86_64-xxxxx.exe; 2. 按照msys2.org主页提示的步骤安装; 3.安装完默认起来的是 UCRT的, 可以根据环境的需要选择, 我选择的 MSYS2 MINGW64 4. 搭建编译环境, 安装对应的软件包  4.1 更新包数据和核心数据包     pacman -Syu 4.2 安装工具链

    2024年02月08日
    浏览(40)
  • Linux系统部署OpenCV环境(java项目使用方式)

    Opencv4.5.2的zip包(OpenCV官网下载) 1. 上传opencv4.5.2的zip包到home目录(不一定home目录,根据运维情况决定) 2. 运行解压缩命令 3. 进入opencv-452文件夹,创建文件夹 4. 进入文件夹中 5. 如果没有安装cmake,使用下列命令安装,并且查看版本信息。 需要高一点的版本,我安装的是

    2024年02月06日
    浏览(40)
  • Linux 环境下使用 Docker 部署 Java 项目教程

    1. 安装 Docker:首先在 Linux 系统上安装 Docker,可以参考 Docker 官方文档进行安装。 2. 构建 Docker 镜像:将 Java 项目打包成 Jar 文件,并编写 Dockerfile 文件,使用 Dockerfile 文件构建 Docker 镜像。 dockerfile 文件内容如下:    FROM openjdk:8-jdk-alpine    VOLUME /tmp    ADD your-project-name

    2024年02月09日
    浏览(24)
  • 在CentOS环境下编译GreatSQL RPM包

    本文介绍如何在CentOS环境下编译GreatSQL RPM包。 运行环境是docker中的CentOS 8 x86_64: 开始编译之前,需要先配置好yum源,方便安装一些辅助工具。 在这里采用阿里云的yum源: 安装 rmp-build 包,它会附带安装其他必要的相关依赖包: 创建相应的目录 戳此链接 https://gitee.com/GreatS

    2024年02月03日
    浏览(26)
  • uniapp 小程序不同环境下编译的变量配置

    官网地址:概述 | uni-app官网 uni-app 通过在 package.json 文件中增加 uni-app 扩展节点,实现自定义条件编译,例如要发行最新的小程序,可能需要手动修改一些生产与开发环境的不同ip地址等,通过此配置条件,实现自动编译  在json文件中新增一项  uni-app 这里将环境变量设置为两个

    2024年02月13日
    浏览(34)
  • qnx环境下编译ffmpeg及解码mp4实践

    1.ffmpeg是一套可以用来进行音视频处理的工具和编解码库; 2.采用LGPL或GPL许可证(不能修改源码,只能使用so库,如果要修改源码,必须发布工程代码); 3.ffmpeg对与硬件平台、GPU做了很多优化,效率非常高; 4.包含库: (1)avcodec 编解码(最重要的库) (2)avformat 封装格式

    2023年04月20日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包