该库允许您直接从 Java 使用内置或外部网络摄像头。它旨在抽象常用的相机功能并支持各种捕获框架。
假设这样一种情况,您的代码依赖于某些捕获框架,但突然您必须放弃它并使用不同的、可能更新的框架(例如,用最新的 GStreamer 替换陈旧的 JMF)。通过这样做,您将不得不重写重要的代码,因为这些框架完全不同并且根本不兼容。这就是 Webcam Capture API 拯救世界的地方 - 创建它是为了消除此类情况的负担,这样您就不必再次重写代码,而只需将驱动程序类切换到不同的驱动程序类即可。
最新稳定版本是: 0.3.12
最新开发版本为: 0.3.13-SNAPSHOT
(以及其他 ARM 设备)
最新版本 (0.3.10) 无法在开箱即用的 ARM 上运行。要使其正常工作,您需要将 BridJ JAR 版本 0.6.2 替换为 0.6.3-SNAPSHOT 或更新的 Bridj-0.7-20140918。此外,最近 OpenIMAJ 团队的 Jonathon Hare 发现了 bridj #525 中描述的一个问题,该问题会导致 armhf 架构出现问题。
最新的稳定版本可在 Maven Central 中找到:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.12</ version >
</ dependency >
快照版本:
< repository >
< id >Sonatype OSS Snapshot Repository</ id >
< url >http://oss.sonatype.org/content/repositories/snapshots</ url >
</ repository >
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.13-SNAPSHOT</ version >
</ dependency >
最新的稳定版本可以作为单独的 ZIP 二进制文件下载。此 ZIP 文件包含 Webcam Capture API 本身和所有必需的依赖项(在libs
目录中)。单击以下链接进行下载:
网络摄像头捕获-0.3.12-dist.zip
最新的开发版本 JAR(又名 SNAPSHOT)可以在此处下载。
如果您有坚强的意志、空闲时间、知识,甚至愿意花少量的钱用于良好目的,您可以帮助开发这个很棒的网络摄像头捕获 API,并使其变得更好!非常欢迎以下几种贡献:
如果你认为这个项目很棒,你愿意提供帮助,但你不知道如何做——你可以成为项目的观星者。通过加星,你可以让项目更受欢迎。如果您想了解有关通知和星标如何在 Github 上工作的更多信息,请访问此链接。
如果您发现了错误或想出了一些出色的功能,可以使网络摄像头捕获成为更好的 API,请毫不犹豫地创建新问题,您可以在其中详细描述问题是什么,或者是什么你想改进吗?
由于网络摄像头捕获使用部分本机代码,因此很难覆盖所有支持的操作系统。我总是在 64 位 Ubuntu Linux、Windows XP 和 Vista(均为 32 位)上测试它,但我无法在 Raspberry Pi、Mac OS 和 32 位 Linux 上测试。如果您有这种可能性,请帮助并测试这些系统。
如果您了解 Java 或 C++,您可以通过分叉存储库和发送拉取请求来帮助开发网络摄像头捕获。如果您不知道如何在 Github 上为其他人的代码做出贡献,请访问此链接。
人们纷纷表示愿意捐出一点钱。捐赠不会给你带来任何特别的东西,除了内心的温暖感觉,并且可能会促使我为网络摄像头捕获项目制作更多免费的材料。您可以通过 PayPal 捐赠,只需点击下面的捐赠按钮 - 它会将您重定向到安全的 PayPal 页面,您可以在其中提供捐赠金额(没有最低金额)。
下面的代码将从默认网络摄像头捕获图像并将其保存在hello-world.png
文件中:
Webcam webcam = Webcam . getDefault ();
webcam . open ();
ImageIO . write ( webcam . getImage (), "PNG" , new File ( "hello-world.png" ));
下面是非常基本的示例,演示了如何在 Java 代码中使用 Webcam Capture API。一切都可以在项目源代码中找到。请注意,其中一些示例可能使用尚未发布到 maven Central 的最新 API。在这种情况下,请确保您使用的是最新的网络摄像头捕获 API 快照。
WebcamPanel
中显示的图像WebcamPanel
中显示的图像WebcamImageTransformer
旋转相机中的图像这里有一些更高级的示例,其中很少有非常奇特的 GUI。
WebcamMotionDetector
与JFrame
窗口结合使用WebcamPanel.Painter
接口在WebcamPanel
组件上绘制效果WebcamImageTransformer
直接在相机图像上绘制效果Genuine Coder 为网络摄像头捕获初学者提供的视频系列:
Webcam Capture API 定义了WebcamDriver
接口,该接口已在多个构建在用于处理多媒体和相机的众所周知的框架之上的捕获驱动程序中实现。完整列表如下。
默认情况下(如果未指定其他驱动程序)库使用默认驱动程序,该驱动程序由包装在线程安全容器中的很棒的 OpenIMAJ 框架的小而精致的部分组成。但是,还有更多现成的驱动程序可以用作默认驱动程序的替代或补充。通过利用这些驱动程序,Webcam Capture 可以通过各种新功能进行扩展(例如 IP 摄像机支持)。
其他捕获驱动程序列表包括:
司机姓名 | 稳定的 | 中央 | 描述 |
---|---|---|---|
网络摄像机 | 是的 | 是的 | IP/网络摄像机驱动程序 |
网络摄像头 | 是的 | 是的 | FSWebcam CLI 工具的驱动程序 |
流媒体 | 是的 | 是的 | GStreamer 框架的驱动程序 |
开放伊玛吉 | 是的 | 是的 | OpenIMAJ 框架的驱动程序 |
v4l4j | 是的 | 不 | V4L4j 库的驱动程序 |
杰姆夫 | 是的 | 是的 | JMF / FMJ 框架的驱动程序 |
长期民用 | 是的 | 是的 | LTI-CIVIL 库的驱动程序 |
超值 | 是的 | 是的 | vlcj 库的驱动程序 |
javaCV | 是的 | 是的 | JavaCV 库的驱动程序 |
ffmpeg-cli | 波克 | 不 | FFmpeg CLI 工具的驱动程序 |
拉斯皮卡姆 | 波克 | 不 | Raspicam CLI PIcam 工具的驱动程序 |
如果未指定其他驱动程序,则将使用默认驱动程序。它由封装在线程安全容器中的很棒的 OpenIMAJ 框架的小而精致的部分组成。
该捕获驱动程序可以访问 IP 摄像头设备并处理 JPEG 图片或 MJPEG 流形式的图像。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ipcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new IpCamDriver ());
更多详细信息和二进制文件下载可以在专用的 webcam-capture-driver-ipcam 页面上找到。
该捕获驱动程序可以使用名为fswebcam
(由 Philip Heron 编写)的 CLI 工具来访问连接到计算机的 UVC 设备。它仅适用于*nix,并且需要在使用驱动程序的环境中安装工具。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-fswebcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new FsWebcamDriver ());
有关如何使用、如何安装fswebcam
以及二进制文件下载位置的更多详细信息,可以在专门的 webcam-capture-driver-fswebcam 页面上找到。
该捕获驱动程序使使用 GStreamer 访问连接到计算机的 UVC 相机设备成为可能。它仅适用于 Windows 和 Linux。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-gstreamer</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new GStreamerDriver ());
有关如何使用、如何安装 GStreamer 以及二进制文件下载位置的更多详细信息,可以在专门的 webcam-capture-driver-gstreamer 页面上找到。
该捕获驱动程序使使用 OpenIMAJ 访问连接到计算机的 UVC 相机设备成为可能。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-openimaj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new OpenImajDriver ());
有关如何使用它以及在哪里可以下载二进制文件的更多详细信息,可以在专门的 webcam-capture-driver-openimaj 页面上找到。
这是使用 V4L4j 项目访问 UVC 相机设备的捕获驱动程序。它仅适用于 Linux,而且似乎最适合在 Raspberry Pi 上使用。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-v4l4j</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new V4l4jDriver ());
有关如何使用它以及在哪里可以下载必要的二进制文件的更多详细信息,可以在专门的 webcam-capture-driver-v4l4j 页面上找到。
这是使用 JMF(Java Media Framework)访问 UVC 网络摄像头设备的捕获驱动程序。使用此驱动程序之前,需要在 PC 上安装并配置 JMF。它还可以与 FMJ 项目交替使用。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-jmf</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new JmfDriver ());
有关如何使用、安装以及在哪里可以下载必要的二进制文件的更多详细信息,可以在专门的 webcam-capture-driver-jmf 页面上找到。
这是捕获驱动程序,旨在利用 LTI-CIVIL 项目(由 Larson Technologies Inc. 开发)的功能并使用它来访问各种 UVC 设备。它仅适用于 32 位架构。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-lti-civil</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new LtiCivilDriver ());
有关如何使用它以及在哪里可以下载必要的二进制文件的更多详细信息,可以在专门的 webcam-capture-driver-lti-civil 页面上找到。
这是捕获驱动程序,它使用 Caprica Software Limited 的 VLCj 库来访问 UVC 相机设备。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new VlcjDriver ());
有关如何使用它、如何安装以及在哪里可以下载必要的二进制文件的更多详细信息,可以在专门的 webcam-capture-driver-vlcj 页面上找到。
这是捕获驱动程序,它使用 JavaCV 绑定 OpenCV 来访问 UVC 相机设备。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-opencv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
或者如果您使用的是网络摄像头捕获 < 0.3.12:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-javacv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
如果您仅针对特定平台,请查看减少依赖项数量。
使用方法:
Webcam . setDriver ( new JavaCvDriver ());
有关如何使用它、如何安装以及在哪里可以下载必要的二进制文件的更多详细信息,可以在专门的 webcam-capture-driver-javacv 页面上找到。
这是捕获驱动程序,它使用 FFmpeg 中的ffmpeg
CLI 工具来访问 UVC 相机设备。
Maven 依赖:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ffmpeg-cli</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
使用方法:
Webcam . setDriver ( new FFmpegCliDriver ());
有关如何使用它、如何安装以及在哪里可以下载必要的二进制文件的更多详细信息,可以在专门的 webcam-capture-driver-ffmpeg-cli 页面上找到。
在阅读了 Andrew Davison 的精彩书籍《杀手游戏编程》(该书也可以在线获取)后,我最初开始将网络摄像头捕获作为一个简单的概念验证。谢谢你安德鲁!后来我发现 Java API 完全混乱,允许你从网络摄像头捕获图像。一旦您选择了特定的 API,您就无法在不修改大部分代码的情况下更改它。我决定改变这种情况,为各种不同的 API(如 JMF、OpenCV、OpenIMAJ、LTI-CIVIL、VLC)编写通用包装器。通过这种方式,我们今天所知道的网络摄像头捕获变得栩栩如生。如今,您只需更换网络摄像头驱动程序即可更改底层框架(一行代码更改)。如果没有特定框架的驱动程序,自己编写是很容易的。
版权所有 (C) 2012 - 2017 Bartosz Firyn (https://github.com/sarxos) 和贡献者
特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地使用本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售软件的副本,并允许向其提供软件的人员这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件中的使用或其他交易而产生或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权行为还是其他行为。软件。