DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Webカメラの制御について

環境/言語:[WindowsXp VB.NET2005]
分類:[.NET]

お世話になります。

VB.NETにてWebカメラ制御の開発をやっています。
カメラでリアルタイムの動画を表示し、任意の時点で静止画を
とるような制御ができました。

しかし、「動画を出力せずに」VBでカメラを事前に起動しておいて、
任意の時点で静止画をとるような制御方法はわかりません。

どなたかご教授をお願い致します。
> VB.NETにてWebカメラ制御の開発をやっています。
> カメラでリアルタイムの動画を表示し、任意の時点で静止画を
> とるような制御ができました。

  どんな方法で表示されているのか・・・

  また、そこから静止画がとれるのであれば、
  動画表示機能を非表示とかの逃げ手ではダメ
  ですか?

以上。
■No23950に返信(オショウさんの記事)
>>VB.NETにてWebカメラ制御の開発をやっています。
>>カメラでリアルタイムの動画を表示し、任意の時点で静止画を
>>とるような制御ができました。
>
>   どんな方法で表示されているのか・・・
>
>   また、そこから静止画がとれるのであれば、
>   動画表示機能を非表示とかの逃げ手ではダメ
>   ですか?
>
> 以上。

オショウさん、書き込みありがとうございます。

今回はVBでの開発ですが、表示用の画面がないのです。
↑カメラ制御用のクラスを作っているだけです。

簡単でいいますと、画面なしでカメラは別のデバイス(リーダライタなど)
から「撮影」とのコマンドを受けて、一枚の写真を撮るだけです。
なので、その動画を非表示することはあまりよろしくないのでは・・・
むしろ動画を非表示にすることで写真が撮れないとのことです。

よろしくお願いします。
> 今回はVBでの開発ですが、表示用の画面がないのです。
> ↑カメラ制御用のクラスを作っているだけです。

  やり方はあるかと・・・
  隠しフォーム作って、そこに表示させて静止画撮るとか。

  後、キャプチャするに、どんな機能で動画取得されてます?
  Video for Windows? DirectX?

  こういう場合、Video for Windows の場合ならできますヨ!
  やったことありますから。

  もう一つ、TAWIN API で撮れる場合もあります。

  上記の2つ、対象デバイスとしてそのWebカメラを指定
  できれば、静止画撮れます。

※ 最近のWebカメラなら対応していない可能性は高いですが。

以上。参考まで
■No23957に返信(オショウさんの記事)
>>今回はVBでの開発ですが、表示用の画面がないのです。
>>↑カメラ制御用のクラスを作っているだけです。
>
>   やり方はあるかと・・・
>   隠しフォーム作って、そこに表示させて静止画撮るとか。
>
>   後、キャプチャするに、どんな機能で動画取得されてます?
>   Video for Windows? DirectX?
IGraphBuilderで動画を表示、ISampleGrabberで静止画を撮っています。

>   こういう場合、Video for Windows の場合ならできますヨ!
>   もう一つ、TAWIN API で撮れる場合もあります。
知識不足ですが、聞いたことがありません。(^^;)
調べてみます。

後もう一点なんですが、IGraphBuilderを使用した場合、
動画のサイズ(高さ、幅)はどうやって指定すればよいかご存知でしょうか?
↑pictureboxなどに表示した場合のサイズではなく、実の動画のサイズです。


よろしくお願いします。
> IGraphBuilderで動画を表示、ISampleGrabberで静止画を撮っています。

  ??撮れているなら質問の意味あるの?

  それとなぜ、DirectX 9.0以上使用とか書けないのでしょう。

> 後もう一点なんですが、IGraphBuilderを使用した場合、
> 動画のサイズ(高さ、幅)はどうやって指定すればよいかご存知でしょうか?
> ↑pictureboxなどに表示した場合のサイズではなく、実の動画のサイズです。

  私はDirectX使わないので、どなたか詳しい方!

以上。
もしかして、テスト的にフォームで実験コード作って動作確認
した後にクラス化しないといけなくなったので、フォームが無
いのでどうしたらいい?

と言う話ですか?

クラスでもフォーム持てますので、『隠しフォーム作って』と
書いたのですが。

どうやってフォーム持たせるか・・・
は簡単です。System.Windows.Foems.dllを参照設定してやれば
クラスでもフォーム持てます。

次に上記の方法は使いたくない!
と言うのであれば、DirectXをあきらめて下さい。

以上。
■No23960に返信(オショウさんの記事)
> もしかして、テスト的にフォームで実験コード作って動作確認
> した後にクラス化しないといけなくなったので、フォームが無
> いのでどうしたらいい?
>
> と言う話ですか?
その通りです。

> クラスでもフォーム持てますので、『隠しフォーム作って』と
> 書いたのですが。
>
> どうやってフォーム持たせるか・・・
> は簡単です。System.Windows.Foems.dllを参照設定してやれば
> クラスでもフォーム持てます。
この方法でやってみたら、なんとか解決ができました!

いろいろアドバイスありがとうございました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板