1

クライアントの Web カメラを実行し、ボタンで写真を撮る Java アプレットを作成しようとしていますが、アプレットで Web カメラを実行する方法が見つかりませんでした。これを達成する簡単な方法を知っている人はいますか?

ありがとう。

4

2 に答える 2

2

最初の問題は、アプレットがハードウェアの許可を必要とすることです。アプレットには、Java インストールからポリシー ファイルを読み取る SecurityManager があります。標準では、WebCam やファイルシステムなどの外部デバイスから読み取る権限はありません。

あなたの問題については、アプリケーションを実行する JFrame などのローダーとしてアプレットを使用する必要があります。

ウェブカメラにはOpenCVを使用できます。これは、C++、Android、および .NET でも利用できます。

それがあなたを助けたことを願っています;)

于 2012-07-10T07:50:46.083 に答える
0

この例をご覧になることをお勧めします。Webcam 機能を使用してアプレットを作成し、それを HTML ページに埋め込む方法は、まさにこれだと思います。jarsignerJAR はツールで署名されているため、ハードウェアへのアクセスに問題はありません。JAR が自己署名証明書で署名されている場合、Java はユーザーにそれを実行するかどうかを尋ねます。認証局からの証明書で署名されている場合は、尋ねられず、実行するだけです。

デモ アプレットはこちらから入手できます (ウェブカメラの初期化には数秒かかりますので、しばらくお待ちください): http://webcam-capture.sarxos.pl/examples/applet

これには、次のようないくつかのフレームワークを使用できます。

  1. Webcam Captureは、IP / ネットワーク カメラと同じように、組み込みまたは USB Web カメラから画像を読み取ることができるシンプルな Java ライブラリです。成熟していませんが、小さく、アプレットで使用する準備ができています。上で提供した例は、そこから取られたものです。多くのコーディングを行う必要はありません。ほとんどすべての準備が整っています。Windows、Linux、Mac OS など、さまざまなシステムで問題なく動作します。
  2. JavaCVは OpenCV の Java ラッパーですが、お勧めしません。ドキュメントが不足しており、OpenCV インストール パッケージが 100 MB 以下であるため、Java アプレットには多すぎます。本当に必要なネイティブ バイナリだけを取得することもできますが、実際に必要なバイナリを区別することは非常に困難です。私の意見では、学ぶのが非常に難しい巨大なAPIを定義しています。
  3. LTI-CIVILは、組み込みまたは USB 接続の Web カメラから画像を読み取ることができる小さなフレームワークです。とても使いやすいですが、もうメンテナンスされていません (最終更新は 2007 年)。
  4. JMFは、Java 用の Oracle メディア ライブラリです。ウェブカメラと録画デバイスにアクセスできますが、非常に古く (最終更新は 2004 年)、メンテナンスされていません。アプレットと組み合わせて使用​​することもできますが、このアプレットを使用する場合は、JMF を自分の PC にインストールする必要があります。サポートされているシステム (Windows、Linux、Solaris、Mac OS) ごとに 1 つずつ、いくつかのインストール パッケージがあります。
  5. VLC プレーヤー ネイティブ バイナリの Java ラッパーであるVLCj 。ウェブカメラへのアクセスを提供しますが、それを検出することはできません (少なくとも Windows では)。そのため、Java アプレットから使用するには、常にウェブカメラのロケーター アドレス (通常は 0) を知っておく必要があります。
  6. OpenIMAJは、メディア分析用の非常に強力な Java ライブラリです。非常に高速で移植可能ですが、残念ながら多くのサードパーティの依存関係が必要になるため、アプレットはそれらすべてをダウンロードする必要があります (それ以上ない場合は少なくとも 20MB)。

したがって、オプション 1 を使用することに決めた場合、私が提供した例をニーズに合わせて再設計するのは非常に簡単です。この例では Maven を使用していますが、Ant を使用したり、手動で JAR を作成したりしても同じ効果が得られます。

于 2012-11-18T22:28:20.870 に答える