javacv模块依赖简化
前言
JavaCV更新到1.5.x版本,依赖包也迎来了很大变化,体积也变大了不少。由于javacv跨平台,那么全部javacv依赖包下载下来后,整个javacv的包会特别巨大,接近1G.显然很多平台依赖包我们并不需要,而且我们开发时只需要自己本身开发平台的依赖包就可以了
JavaCV1.5.x和之前版本已经不兼容
JavaCV模块依赖说明
1.5.x版本依赖及包路径说明
-
以ffmpeg举例,1.5.x开始包路径修改为:
import org.bytedeco.ffmpeg.avcodec,
import static org.bytedeco.ffmpeg.global.avcodec.;,
import static org.bytedeco.ffmpeg.global.avformat.; -
以opencv举例,1.5.x开始包路径修改为:import org.bytedeco.opencv.opencv_core;
import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc; -
以tesseract举例,1.5.x开始包路径修改为:org.bytedeco.tesseract
-
以videoinput举例,1.5.x开始包路径修改为:org.bytedeco.videoinput
1.5.x版本依赖配置
1.5.x版本的maven依赖配置
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.4</version>
</dependency>
精简依赖包
在教程案例中,为了防止出错,我们使用了JavaCV全量包:
<!-- 全量包-->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.5</version>
</dependency>
但是这个包太大,我们需要精简,由于每个依赖有依赖其他包的情况,所以精简也不是随便精简的
javacv核心依赖包(基础库,必须)
如果要使用javacv调用任何其他native库,都必须要javacv核心库,核心库包含两个依赖:
以maven的pom.xml为例,设置javacv版本号和所属平台架构名称
<properties>
<javacv.version>1.5.5</javacv.version>
<system.windowsx64>windows-x86_64</system.windowsx64>
</properties>
就是 javacv+javacpp核心最小精简依赖,包含javacv封装库和javacpp跨平台本地接口映射库:
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>${javacv.version}</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp-platform</artifactId>
<version>${javacv.version}</version>
</dependency>
ffmpeg最小依赖
这里的ffmpeg最小依赖包,只包含一个平台架构包
<!-- javacv+javacpp核心库-->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>${javacv.version}</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp-platform</artifactId>
<version>${javacv.version}</version>
</dependency>
<!-- ffmpeg最小依赖包,必须包含上面的javacv+javacpp核心库 -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>4.3.2-${javacv.version}</version>
<classifier>${system.windowsx64}</classifier>
</dependency>
opencv最小依赖
opencv依赖项比较复杂,它本身依赖了很多外部包,甚至在视频采集和编解码这块需要依赖ffmpeg,由于opencv一般用途只在图像处理识别这块,所以这里我们写的opencv最小依赖包是只包含采集摄像头图像、图像处理和图像识别所需包。
<!-- javacv+javacpp核心库-->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>${javacv.version}</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp-platform</artifactId>
<version>${javacv.version}</version>
</dependency>
<!-- 最小opencv依赖包 ,必须包含上面的javacv+javacpp -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv</artifactId>
<version>4.5.1-${javacv.version}</version>
<classifier>${system.windowsx64}</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>openblas</artifactId>
<version>0.3.13-${javacv.version}</version>
<classifier>${system.windowsx64}</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>flycapture</artifactId>
<version>2.13.3.31-${javacv.version}</version>
<classifier>${system.windowsx64}</classifier>
</dependency>