私はxnaの初心者です
ウェブカメラを使用して、ウェブカメラの画像を 3D モデルの背景テクスチャとして作成したい
ウェブカメラを呼び出す機能はありますか
提案をありがとう
AForgeフレームワークを確認すると、Webカメラフィードでモーション検出を行うサンプルプログラムが見つかります。
http://code.google.com/p/aforge/
このフレームワークには、Webカメラフィードを取得するのが非常に簡単です。
基本的には
VideoCaptureDevice device = new VideoCaptureDevice(monikor);
device.NewFrame += new AForge.Video.NewFrameEventHandler(webcam_NewFrame);
webcam.Start();
次のようなコードを呼び出すことで、Webカメラのモニカを取得できます...
FilterInfoCollection webcamList = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach(FilterInfo info in webcamList)
{
string monikor = info.MonikorString;
string deviceName = info.Name;
}
これは、ウェブカメラフィードを取得するために私が遭遇した最良/最も簡単な方法です。
次に、ビットマップをTexture2Dに変換して、必要に応じて表示できます。
サードパーティのVideoTexture クラスを使用できます。Web カメラ、AVI、MPEG、または WMV を使用でき、スプライトバッチで使用したり、3D オブジェクトに適用したりできる画像として、現在のフレームを使用して Texture2D オブジェクトにアクセスできます。
- VideoTexture.cs ファイルを独自のプロジェクトにコピーします。
- VideoTexture.cs ファイルの名前空間をプロジェクトの名前空間の名前に変更します。
- DirectShow.NET ライブラリから DirectShowLib-2005.dll への参照を追加します。
- コンパイルします。VideoTexture クラスがプロジェクトで使用できるようになりました。
私は使ったことはありませんが、ドキュメントをダウンロードすると役立つはずです。VideoTexture を作成し、その VideoTexture2D プロパティを使用して Texture2D を取得するだけです。次に、3D オブジェクトの各エフェクトのテクスチャとして設定できます。
私は少し前にこの問題に遭遇しました。私が思いついたのはかなり厄介な解決策です。
まず、motion_src ライブラリを使用する必要があります。ここで見つけることができます。
http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx
そのチュートリアルはすべてモーション検出に関するものですが、デモ コードをダウンロードすると、カメラからの入力をキャプチャする場所を少し取ることができます。
次に、それを xna プロジェクトへの参照として追加します。
カメラからフィードをキャプチャするようにシステムをセットアップしたら (すべての詳細はそのチュートリアルにあります。ここでは繰り返しません)、フィードをコピーする必要があります (これは System.Drawing.Bitmap にキャプチャされます。 xna テクスチャ。
Texture2D image;
b = (System.Drawing.Bitmap)camera.LastFrame.Clone();
for (int j = 0; j < image.Height; j++)
{
for (int i = 0; i < image.Width; i++)
{
c = b.GetPixel(i, j);
colours[i + j * image.Width] = new Color(c.R, c.G, c.B, byte.MaxValue);
}
}
image.SetData<Color>(colours);
次に、spritebatch への通常の呼び出しを使用して画像テクスチャを表示できます:)