該程式庫可讓您直接從 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) 和貢獻者
特此免費授予任何獲得本軟體及相關文件文件(「軟體」)副本的人不受限制地使用本軟體,包括但不限於使用、複製、修改、合併的權利、發布、散佈、再授權和/或銷售軟體的副本,並允許向其提供軟體的人員這樣做,但須滿足以下條件:
上述版權聲明和本授權聲明應包含在本軟體的所有副本或主要部分中。
本軟體以「現況」提供,不提供任何明示或暗示的保證,包括但不限於適銷性、特定用途的適用性和不侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.