2011年2月8日火曜日

[LabVIEW]DirectShowLib_for_LabVIEWのNTSCキャプチャへの対応

以前に紹介した「DirectShowLib_for_LabVIEW」ですが、『PC-SDVD/U2G』のようなNTSCキャプチャーデバイスに対応させるため、一部変更を行いました(ダウンロードは本エントリからどうぞ)。

DS_PrepareFromCameraName.viを、手作業でフィルターピンを繋ぐやり方から、ICaptureGraphBuilder2::RenderStreamメソッドを使うやり方に変更しました。
これにより、NTSCキャプチャーデバイスからの映像処理に必要なクロスバー用フィルタの作成が自動で行われるようになっています。

デジカメ『GE C1033』からのライブビューを『PC-SDVD/U2G』でキャプチャーし、それをLLB同梱のDemo_CameraSnap.viで取り込んだときの様子です。


これで応用範囲が広がりんぐですねw

6 件のコメント:

  1. 素晴らしいviの公開ありがとうございます。

    DirectShowについて色々調べたのですが、自分では解決できなかったので質問します。
    キャプチャサイズを変更するにはどうしたら良いのでしょうか

    返信削除
  2. > キャプチャサイズを変更するにはどうしたら良いのでしょうか

    現状のライブラリでは、接続されたカメラのサイズでライブビューを表示し、静止画キャプチャーも同サイズでグラブします。

    静止画キャプチャーを異なるサイズでおこなうためにライブラリに手を入れるくらいなら、カメラサイズでグラブした後に、その画像をLabVIEWが自前で持っている関数でトリミング等サイズ変更したほうが簡単でしょう。

    ライブビューをカメラサイズからトリミングした状態で行いたいのであれば、「IVideoWindow::SetWindowPosiiton」に与えているパラメータを変更すれば可能だと思います。

    返信削除
  3. お返事ありがとうございます。

    早速試してみました、
    表示サイズの変更をすることができました。

    質問の意図ですが、当方、1600×1200のWEBカメラを購入したのですが
    フルサイズでは取得できず640×480でしか取得できないのですが、これはやはりNTSCでのキャプチャのためでしょうか

    返信削除
  4. > 当方、1600×1200のWEBカメラを購入したのですが
    > フルサイズでは取得できず640×480でしか取得できないのですが、
    > これはやはりNTSCでのキャプチャのためでしょうか

    そりゃ、NTSCキャプチャに使ってるグラバーボードが
    640x480しか取り込めてないだけなんじゃ?

    Webカメラ、NTSCグラバーボードの設定(と取説)を
    ご覧になられることをお勧めします。

    返信削除
  5. DirectShowについて色々調べてみたのですが
    IAMStreamConfig 付近の情報が気になったので
    自分でももう少しチャレンジしてみます。

    http://msdn.microsoft.com/ja-jp/library/cc355069.aspx

    返信削除
  6. LabVIEWの活用範囲を広げられそうなVIの公開ありがとうございます。
    取りつきにくくて難解な.NETのワイアリングのお手本になりました。
    私のブログで紹介させていただきました。

    返信削除