当前位置:   article > 正文

Java - 在Linux系统上使用OpenCV和Tesseract_javacv 在linux

javacv 在linux

一、编译OpenCV

1、确保Linux系统安装了cmake构建工具,以及java和ant(这两者如果没有,可能会影响到后面编译opencv生成.so和.jar文件)。

2、从OpenCV官网(https://opencv.org/releases/)下载OpenCV的Sources源码包到本地,本文使用的是较早的2.4.9版本,如下图:

3、使用scp命令,将刚才下载的opencv-2.4.9.zip文件推到远程Linux系统的目标目录下,比如/usr/local/app(app为自己新建的文件夹,命名随意)。

4、登录Linux系统,cd /usr/local/app,然后 unzip opencv-2.4.9.zip 进行解压;

5、cd opencv-2.4.9,然后 mkdir build,新建build目录,准备编译opencv,此时opencv-2.4.9目录下内容如图:
在这里插入图片描述

6、cd build,进入到刚才新建的build目录,使用cmake命令编译opencv,命令如下:

cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/app/install ..
  • 1

这里:
1)BUILD_SHARED_LIBS=OFF,目的是让opencv各模块(比如core、imgproc等)的代码经过编译后集中在一个.so文件中,方便加载;
2)CMAKE_INSTALL_PREFIX=/usr/local/app/install,指定了opencv的安装目录(install也是自己新建的),如果只是为了编译得到.so文件,此参数可以不写;
3)最后的…表示CMakeLists.txt所在的目录,相对于当前目录build,就是上级目录。

运行命令后,控制台部分打印信息如下:
这里列出了即将要编译的模块;

没有安装java和ant,这里就会全部展示为NO,此外编译高版本的opencv时,此处如果有Java wrappers属性为NO,则需要配置JAVA_HOME环境变量。

7、执行命令:make,开始编译,经过较长时间的等待,如果进度到100%且没有报错,则编译完成;此时build目录下生成了一系列文件,其中lib目录中,就有我们需要的libopencv_java249.so文件,此外bin目录中,还生成了opencv-249.jar这个jar包文件。
在这里插入图片描述

8、执行命令:make install,则会开始安装opencv,不过我们已经拿到了.so文件,能够实现java程序中的调用,这步暂时省去。

正常来说,有了.so文件,我们的java程序就可以在Linux系统上,使用System.load方法来加载它,从而使用OpenCV的功能了;如果加载过程中报错,提示依赖文件(比如xx.so)没有找到,可以使用yum install命令安装依赖后再试。
可能需要的依赖项:libjpeg-turbo-devel、libpng-devel、libtiff-devel、jasper-devel、gtk2-devel、gstreamer-plugins-base-devel,如果他们已经被安装,通常可以在/usr/lib64这个文件夹下找到对应的.so文件。

二、安装Tesseract

Linux系统上,如果没有安装Tesseract,java程序中使用Tesseract的doOcr方法进行图像识别时,会报错,提示找不到Tesseract相关的库文件:
在这里插入图片描述
解决方法:
yum install tesseract,安装tesseract;如果你的yum仓库中没有tesseract,可以先安装epel-release:yum install epel-release,然后再安装tesseract。

如果不想在当前机器上安装tesseract,则需要拿到 libtesseract.so、liblept.so文件(比如其他机器上安装了tesseract,可以从系统库中拷贝出来),然后使用Java的System.load方法加载这两个共享库文件。注意libtesseract 依赖 liblept,所以需要先加载 liblept,否则会报错找不到依赖:
java.lang.UnsatisfiedLinkError: /usr/local/app/libtesseract.so.3: liblept.so.4: cannot open shared object file: No such file or directory。

如果已经加载了动态链接库文件,还是报这个错误,可以按照错误中的提示,在项目的resources目录下新建 linux-x86-64目录,将所需的两个.so文件放进去,打到jar包中。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/623325
推荐阅读
相关标签
  

闽ICP备14008679号