DirectShow ビデオ入力クラス
Namespace: FVIL.DSAssembly: FVILforms (in FVILforms.dll) Version: 3.1.0.0 (3.1.0.9)
Syntax
C# |
---|
public class CFviGrabber : CFviGraph, ISampleGrabberCB |
Visual Basic |
---|
Public Class CFviGrabber Inherits CFviGraph Implements ISampleGrabberCB |
Remarks
DirectShow 対応カメラからの画像取り込みを行う為のクラスです。
このクラスの内部では、下記の2つのインターフェースを組み合わせて画像の取り込みを行っています。
インターフェイス | 説明 | サイト (2010年12月 現在) |
---|---|---|
IBaseFilter | ソースフィルタの操作を行います。 | http://msdn.microsoft.com/ja-jp/library/cc355443.aspx |
ISampleGrabber | ソースフィルタから流れる映像を取得します。 | http://msdn.microsoft.com/ja-jp/library/cc369550.aspx |
プロパティ | 初期値 | 範囲 | 説明 |
---|---|---|---|
Images | Capacity = 0, Count = 0 | Capacity = 1~, Count = 1~Capacity | 画像取り込み用バッファ配列 |
LastImage | null | CFviImageのインスタンス | 最後に取り込まれた画像 |
LastImageIndex | -1 | 0~Count-1 | 画像取り込み用バッファ配列の指標 |
ImageSize | Width=0, Height=0 | Width=1~, Height=1~ | 画像サイズ |
BppIn | 24 | FilterFormatInfo.MediaSubType と一致していること。 | ピクセルサイズ (入力側) |
ImageType | RGB24 | DIB を使用する場合はUC8, RGB24, RGB32のいずれか。DIB を使用しない場合は BppIn とサイズを合わせること。 | 出力側の画像種別 |
UseDIB | true | true/false | DIB 使用の有無 |
FreerunMode | true | true/false | フリーランモード |
Examples
ソースコード:
C# | Copy |
---|---|
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using fvalgcli; using System.Windows.Forms; using FVIL.DS; namespace User.SampleCode { public partial class DS { /// <summary> /// ビデオ入力クラス. /// </summary> [FvPluginExecute] public void Grabber() { try { // 1) インスタンスの生成. FVIL.DS.CFviGrabber controller = new FVIL.DS.CFviGrabber(); // 2) カメラ選択ダイアログの表示とパラメータの取得. FVIL.DS.SelectCameraForm form = new SelectCameraForm(); form.ShowDialog(); FVIL.DS.CFviGrabberParam param = form.GetParam(); // 3) グラフの生成. controller.Create(param); // 3) 画像取り込み用バッファの設定. controller.ImageType = FVIL.ImageType.RGB24; for (int index = 0; index < 3; index++) controller.Images.Add(new FVIL.Data.CFviImage()); controller.Validate(); // 4) 入力の開始. controller.Run(); // 5) 1フレーム取り込み完了まで待機. if (!controller.Wait(10000)) { Console.WriteLine("TimeOut"); } // 6) 入力の停止. controller.Stop(); // E) 画像の保存 FVIL.File.Function.SaveImageFile(Defs.ResultDir + "/DS.Grabber_OpenDialog.bmp", controller.LastImage); } catch (FVIL.DS.CFviExceptionDS ex) { Console.WriteLine("Message:{0}", ex.Message ); Console.WriteLine("DSMessage:{0}", CFviExceptionDS.GetDirectShowMessage(ex.ComError)); } catch (FVIL.CFviException ex) { Console.WriteLine("--Function = {0} ErrorCode = {1}", ex.Function, ex.ErrorCode); Console.WriteLine("--Message:{0}", ex.Message); } catch (System.Exception ex) { Console.WriteLine("--Message:{0}", ex.Message); } } } } |
Visual Basic | Copy |
---|---|
Imports System.Collections.Generic Imports System.Text Imports System.Drawing Imports fvalgcli Imports System.Windows.Forms Imports FVIL.DS Namespace SampleCode Public Partial Class DS ''' <summary> ''' ビデオ入力クラス. ''' </summary> <FvPluginExecute> _ Public Sub Grabber() Try ' 1) インスタンスの生成. Dim controller As New FVIL.DS.CFviGrabber() ' 2) カメラ選択ダイアログの表示とパラメータの取得. Dim form As FVIL.DS.SelectCameraForm = New SelectCameraForm() form.ShowDialog() Dim param As FVIL.DS.CFviGrabberParam = form.GetParam() ' 3) グラフの生成. controller.Create(param) ' 3) 画像取り込み用バッファの設定. controller.ImageType = FVIL.ImageType.RGB24 For index As Integer = 0 To 2 controller.Images.Add(New FVIL.Data.CFviImage()) Next controller.Validate() ' 4) 入力の開始. controller.Run() ' 5) 1フレーム取り込み完了まで待機. If Not controller.Wait(10000) Then Console.WriteLine("TimeOut") End If ' 6) 入力の停止. controller.[Stop]() ' E) 画像の保存 FVIL.File.[Function].SaveImageFile(Defs.ResultDir & "/DS.Grabber_OpenDialog.bmp", controller.LastImage) Catch ex As FVIL.DS.CFviExceptionDS Console.WriteLine("Message:{0}", ex.Message) Console.WriteLine("DSMessage:{0}", CFviExceptionDS.GetDirectShowMessage(ex.ComError)) Catch ex As FVIL.CFviException Console.WriteLine("--Function = {0} ErrorCode = {1}", ex.[Function], ex.ErrorCode) Console.WriteLine("--Message:{0}", ex.Message) Catch ex As System.Exception Console.WriteLine("--Message:{0}", ex.Message) End Try End Sub End Class End Namespace |