无需安装, 使用.so 文件 Java 调用opencv处理图片

这几天做一个功能大疆无人机拍摄的正射图片要做粗几何校正,参考了python版本的,需要用到opencv与gdal 

一、opencv的使用(使用的是.so,没有安装opencv)

看网上下载.so 都需要积分,果断从官网下载opencv4.7.0版本源码,自己创建了个ubuntu18.0.4虚拟机,自己编译获取.so 文件。

如何编译opencv就不说了,说一下碰到的问题:

1、没有编译成功 libopencv_java470.so 没找到,网上一搜依赖环境没有安装好

    java与ant 没有安装

    安装一个与线上环境相同的JDK版本,我这里使用的是jdk-8u401-linux-x64.tar.gz 

tar -zxvf jdk-8u401-linux-x64.tar.gz

echo 'export JAVA_HOME=/usr/local/jdk1.8.0_401' | sudo tee -a /etc/profile

echo 'export PATH=$PATH:$JAVA_HOME/bin' | sudo tee -a /etc/profile

source /etc/profile

安装ant 

sudo apt-get install ant -y

执行cmake 时 Java相关的环境如下才算正常

第二次编译的.so 文件 不能用,只有2M多一点,没有包含其他关联的库;

网上搜索了一下需要  cmake 的时候需要加上 -D  BUILD_SHARED_LIBS=OFF

我的cmake命令是这样的:

cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_opencv_java=ON  -D CMAKE_INSTALL_PREFIX=/usr/local -D  BUILD_SHARED_LIBS=OFF ..

然后:

 make -j10
 make install

时间较长生成了一个60多M的so文件。

需要的话可以下载链接:https://pan.baidu.com/s/1fMt9CzB_3Y7u8ZF2hlz0Vw  提取码:42ty 

然后copy 到自己项目指定的路径下加载就好了 :

System.load(opencvPath)

引入 jar 包即可调用opencv了

2、java 调用的时候报错  :

/usr/share/opencv/libopencv java470.so: libavcodec.so.58:sharedsuch file or directory

查了一下系统中只有libavcodec.so.57 没有libavcodec.so.58 啊,差了一顿 最终发现这个文件来自于执行的依赖  libavcodec-dev

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev

发现这个依赖时FFMPEG的库 ,因为之前我用的时ubuntu22.04版本的系统下编译opencv的 ,下载libavcodec-dev的时候按照当前系统版本下载了最新的,所以java加载libopencv java470.so时 找到是 libavcodec.so.58这个关联库。换成ubuntu18.04之后就正常了,可以通过cmke查看其版本

所以建议开发还是编译都要跟线上环境一致。免得碰到版本问题,浪费时间。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值