web-dev-qa-db-ja.com

JavaでWebカメラにアクセスする最良の方法

Javaを使用してWebカメラにアクセスする必要があります。これは私がやりたいことです

  1. ウェブカメラにアクセス

  2. これで、ユーザーは自分の顔が画面に表示されるため、Webカメラが動作するのを見ることができます(Webカメラのビデオ出力を表示しないライブラリがいくつかあると聞きました)

  3. ユーザーが[保存]ボタンをクリックすると、スナップショットを作成して保存します

私は長い間、これを行うための多くの方法を試してきました。

  1. JMF-今は死んだ
  2. FMJ-今も死んでいる
  3. VLCJ-音楽/ビデオプレーヤーを作成しておらず、VLCがインストールされることを期待しているため、多すぎる
  4. Xuggler-やりすぎ
  5. JMyron-動作しませんでした
  6. JavaFX-できると思ったが、できないように思える

ライブラリが上記のことだけを行っている場合でも満足です。それで十分です。しかし、私もそれがシンプルになると期待しています。 DLLを使用していない場合は、プラットフォームに依存しないため、本当に素晴らしいです。 VLCJのようにカメラ名やその他の情報を手動で渡すことなく、カメラを検出できる場合は本当に感謝します(何千ものカメラブランドがある可能性があるため、その中に1000個の要素のリストを作成することはできません)。そして、Webアプリではなくデスクトップアプリケーションを作成しています。

このようなライブラリをご存知の場合は、お知らせください。他のライブラリ(私の要件のすべてに適合しているわけではありませんが、基本的な要件には適合しています)も歓迎します。助けてください

48
PeakGen
9
user504674

あなたが探しているプロジェクトは次のとおりだと思います: https://github.com/sarxos/webcam-capture (私は著者です)

説明したとおりに動作する例があります-実行後、ウィンドウが表示され、「開始」ボタンを押すと、「スナップショット」をクリックした後、Webカメラデバイスからライブ画像を表​​示し、ファイルに保存できます( ソースコードが利用可能 、コーナーのFPSカウンターは無効にできることに注意してください):

snapshot

このプロジェクトは移植性があり(WinXP、Win7、Win8、Linux、Mac、Raspberry Pi)、PCに追加のソフトウェアをインストールする必要はありません。

APIは本当に素晴らしく、簡単に習得できます。単一の画像をキャプチャしてPNGファイルに保存する方法の例:

Webcam webcam = Webcam.getDefault();
webcam.open();
ImageIO.write(webcam.getImage(), "PNG", new File("test.png"));
76
Bartosz Firyn