Web カメラにアクセスするために WIALib を使用しています。私が開発しているコードは非常に単純です。ボタンを押すと、ウェブカメラの画像が撮影され、画像ボックスに表示されます。
ウェブカメラで写真を撮ることはできますが、まだ完全には自動化されていません。ウェブカメラで撮影した写真を取得するために私が見つけた唯一の方法は、これを使用することです:
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. Web カメラの写真のリストに自動的にアクセスして、最後に撮影した写真を取得できるようにします。
よろしくお願いします。助けてくれてありがとう、ミカエル。