私はWIALibを使用して自分のウェブカメラにアクセスしています。私が開発しているコードはとてもシンプルです。ボタンを押すとウェブカム画像が撮影され、画像ボックスに表示されます。WIAを使用してC#のWebカメラを使用して自動的に写真を撮る
私はすでに自分のウェブカメラで写真を撮ることができますが、まだ完全には自動化されていません。
wiaPics = wiaRoot.GetItemsFromUI(WiaFlag.SingleImage, WiaIntent.ImageTypeColor) as CollectionClass;
をしかし、これは画像を選択するようにユーザーに尋ねる:私はウェブカメラで撮影した画像を取得するために見つけた唯一の方法は、これを使用しています。そして、私はいつも最後の写真を撮りたい。だから私はこのようにしようとしている:
string imageFileName = Path.GetTempFileName(); // create temporary file for image
wiaItem = wiaRoot.TakePicture(); // take a picture
Cursor.Current = Cursors.WaitCursor; // could take some time
this.Refresh();
wiaItem.Transfer(imageFileName, false); // transfer picture to our temporary file
pictureBox1.Image = Image.FromFile(imageFileName); // create Image instance from file
Marshal.ReleaseComObject(wiaItem);
しかし、この方法TakePicture()はnullを返します、と私は、画像を転送することはできません。一番奇妙なのは、TakePicture()メソッドが呼び出された後に実際に写真が撮られたということです。なぜなら私が手動でウェブカメラに行くと写真がそこにあるからです!私はそれがなぜ価値を返さないのか分かりません。
要約すると、私はこの2つのうちのいずれかを必要とします。 1. TakePicture()を働かせて、私が使用できる値を返します。 2.ウェブカメラの写真のリストに自動的にアクセスして、最後に撮影した写真を取得できます。
ご協力ありがとうございます、Micael。
フィリップのおかげでありがとうございました。問題は、私は "メソッドのためのオーバーロードはありません" TakePicture "1引数を取る"エラーを取得しています。 : – Micael
@Micael - 最新の方は編集がうまくいくかどうか確認してください –
私のWiaLibのバージョンはわかりませんWindowsXP ProとVisual Studio 2010で作業しています。あなたのコード、クラスDeviceManagerClassとデバイスが認識されませんでした.WiaLib以外の参照を追加する必要がありますか?ありがとうございました:) – Micael