Bytedeco 简介
Bytedeco 是一个开源项目,旨在为Java平台提供对计算密集型科学、多媒体、计算机视觉、深度学习等领域的支持。通过使用JavaCPP技术,Bytedeco能够将本机C/C++库直接在Java平台上使用,从而填补了Java与C/C++之间的桥梁。
核心技术
JavaCPP [API] – 该工具不仅可以生成 JNI 代码,还可以从完全用 Java 编写的适当接口文件构建原生包装器库文件。它还可以自动解析 C/C++ 头文件,以生成所需的 Java 接口文件。
主要组件和功能
Bytedeco 项目包含多个组件,其中最核心的是JavaCPP和JavaCV。
- JavaCPP:这是一个工具库,用于生成Java与C/C++库之间的绑定,使得Java程序可以直接调用这些本地库。它支持多种著名的C/C++库,如OpenCV、FFmpeg等。
- JavaCV:这是一个基于JavaCPP的库,提供了对OpenCV、FFmpeg等多媒体处理库的封装,使得Java开发者可以方便地使用这些库进行图像处理、视频处理等操作。
预建 Java 绑定到 C/C++ 库
这些是我们称之为JavaCPP 预置库 (JavaCPP Presets) 的 项目的一部分。许多预置库共存于同一个 GitHub 仓库中,并且都使用 JavaCPP 封装来自开源领域的预定义 C/C++ 库。这些绑定公开了几乎所有相关的 API,并以可移植且用户友好的方式将它们提供给任何 Java 虚拟机(包括 Android),就像其他任何常规 Java 库一样。我们为以下 C/C++ 库提供了预置库:
以下是转换为 Markdown 格式的列表:
计算机视觉与机器学习
- OpenCV – 示例用法 API – 超过 2500 种优化的计算机视觉和机器学习算法
- FFmpeg – 示例用法 API – 一个完整的跨平台解决方案,用于录制、转换和传输音频和视频
- FlyCapture – 示例用法 API – PGR 的图像采集和相机控制软件
- Spinnaker – 示例用法 API – FLIR 的图像采集和摄像机控制软件
- libdc1394 – 示例用法 API – 适用于 DCAM/IIDC 相机的高级 API
- OpenKinect – 示例用法 API API 2 – 用于 Xbox 和 Windows 传感器的开源库
- librealsense – 示例用法 API API 2 – 用于 Intel RealSense 深度和跟踪相机的跨平台库
- videoInput – 示例用法 API – 免费的 Windows 视频捕获库
- ARToolKitPlus – 示例用法 API – 基于标记的增强现实跟踪库
- Chilitags – 示例用法 API – 用于增强现实和机器人的稳健基准标记
- flandmark – 示例用法 API – 面部特征点检测器的开源实现
- Arrow – 示例用法 API – 用于内存数据的跨语言开发平台
- HDF5 – 示例用法 API – 用于管理极大和复杂数据集合的工具
- Hyperscan – 示例用法 API – 高性能正则表达式匹配库
- LZ4 – 示例用法 API – 极快的压缩算法
- MKL – 示例用法 API – 用于 Intel 系统的最快和最常用的数学库
- oneDNN – 示例用法 API API 2 – Intel 深度神经网络数学核心库 (DNNL)
- OpenBLAS – 示例用法 API – 基于 GotoBLAS2 1.13 BSD 版本的优化 BLAS 库,外加 LAPACK
- ARPACK-NG – 示例用法 API – 用于解决大规模特征值问题的子程序集合
- CMINPACK – 示例用法 API – 用于求解非线性方程和非线性最小二乘问题的工具
- FFTW – 示例用法 API – 快速计算一维或多维离散傅里叶变换 (DFT)
- GSL – 示例用法 API – GNU 科学库,C 和 C++ 程序员的数值库
- CPython – 示例用法 API – Python 编程语言的标准运行时
- NumPy – 示例用法 API – 基础 N 维数组包
- SciPy – 示例用法 API – 科学计算的基础库
- Gym – 示例用法 API – 用于开发和比较强化学习算法的工具包
- LLVM – 示例用法 API – 模块化和可重用的编译器和工具链技术集合
- libffi – 示例用法 API – 可移植的外函数接口库
- libpostal – 示例用法 API – 用于解析/规范化全球街道地址的工具
- LibRaw – 示例用法 API – 用于数字相机生成的 RAW 文件的简单统一接口
- Leptonica – 示例用法 API – 用于图像处理和图像分析应用的软件
- Tesseract – 示例用法 API – 可能是最准确的开源 OCR 引擎
- Caffe – 示例用法 API – 快速开放的深度学习框架
- OpenPose – 示例用法 API – 用于身体、面部、手部和足部估计的实时多人关键点检测
- CUDA – 示例用法 API – 可能是最流行的 GPU 并行计算平台
- NVIDIA Video Codec SDK – 示例用法 API – 用于硬件加速视频编码和解码的 API
- OpenCL – 示例用法 API – 异构系统并行编程的开放标准
- MXNet – 示例用法 API – 灵活高效的深度学习库
- PyTorch – 示例用法 API – 具有强大 GPU 加速的张量和动态神经网络
- SentencePiece – 示例用法 API – 用于基于神经网络的文本生成的无监督文本分词器
- TensorFlow – 示例用法 API – 使用数据流图进行可扩展机器学习的计算
- TensorFlow Lite – 示例用法 API – 用于设备上推理的开源深度学习框架
- TensorRT – 示例用法 API – 高性能深度学习推理优化器和运行时
- Triton Inference Server – 示例用法 API – 优化的云和边缘推理解决方案
- ALE – 示例用法 API – 用于开发 Atari 2600 游戏 AI 代理的街机学习环境
- DepthAI – 示例用法 API – 围绕 Intel Myriad X 构建的嵌入式空间 AI 平台
- ONNX – 示例用法 API – 开放神经网络交换,AI 模型的开源格式
- nGraph – 示例用法 API – 用于深度学习框架的开源 C++ 库、编译器和运行时
- ONNX Runtime – 示例用法 API – 跨平台、高性能的 ML 模型评分引擎
- TVM – 示例用法 API – 用于 CPU、GPU 和加速器的端到端机器学习编译器框架
- Bullet Physics SDK – 示例用法 API – 实时碰撞检测和多物理模拟
- LiquidFun – 示例用法 API – 2D 物理引擎
- Qt – 示例用法 API – 通常用作图形工具包的跨平台框架
- Skia – 示例用法 API – 用于绘制文本、几何和图像的完整 2D 图形库
- cpu_features – 示例用法 API – 跨平台 C99 库,用于在运行时获取 CPU 特性
- ModSecurity – 示例用法 API – 用于 Apache、IIS 和 Nginx 的跨平台 Web 应用程序防火墙 (WAF) 引擎
- Systems – 示例用法 API – 调用操作系统(glibc、XNU libc、Win32 等)的原生函数
利用预设绑定的项目
- JavaCV [API] – 基于 JavaCPP 预设的库,它依赖于计算机视觉领域常用的原生库,以方便在 Java 平台上开发此类应用程序。它提供了易于使用的接口,可以从摄像头和音频/视频流中抓取帧,进行处理,并将其记录回磁盘或通过网络发送。
- JavaCV 示例—— 最初用 C++ 编写的示例集合,用于Robert Laganière 所著的《OpenCV 2 计算机视觉应用程序编程手册》一书,但已移植到 JavaCV 并用 Scala 编写。
- ProCamCalib – 示例 JavaCV 应用程序,可以对一组视频投影仪和彩色相机执行几何和光度校准。
- ProCamTracker – 另一个示例 JavaCV 应用程序,它使用来自 ProCamCalib 的校准来实现跟踪纹理平面的视觉方法,并通过投影映射实现无标记交互式增强现实。
使用方法和示例
使用Bytedeco非常简单,只需在项目中添加相应的依赖即可。以下是在Maven中添加OpenCV和FFmpeg依赖的示例:
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>opencv-platform</artifactId>
<version>4.0.1-1.4.4</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg-platform</artifactId>
<version>4.1-1.4.4</version>
</dependency>
通过这些依赖,Java程序可以直接调用OpenCV和FFmpeg的功能,进行图像处理和视频处理等操作3。
作者:Jeebiz 创建时间:2025-05-19 13:44
最后编辑:Jeebiz 更新时间:2025-05-19 13:59
最后编辑:Jeebiz 更新时间:2025-05-19 13:59