Assembly: FVILforms (in FVILforms.dll) Version: 3.1.0.0 (3.1.0.9)
Syntax
C# |
---|
[SerializableAttribute] public class CFviGrabberParam : ICloneable, IFviCopyable, IFviFileAccess |
Visual Basic |
---|
<SerializableAttribute> Public Class CFviGrabberParam Implements ICloneable, IFviCopyable, IFviFileAccess |
Remarks
このクラスは、カメラの GUID や映像フォーマット情報等を保有するものです。
主に CFviGrabber クラスの Create(CFviGrabberParam) で使用します。
このクラスの内容はカメラ毎(※1)に異なります。
SelectCameraForm の
GetParam()()()() を使用して取得してください。
保存する場合は、SaveXml(String, Object) 等をご使用ください。
このクラスに保存されるカメラの GUID はカメラの種別を識別する為のものですが、 以下の条件では同一のカメラでも GUID が異なりますのでご注意ください。
- 32bit 版と 64bit 版
- Windows の標準ドライバとカメラメーカーの専用ドライバ
初期値と範囲:
プロパティ | 初期値 | 範囲 | 説明 |
---|---|---|---|
FilterCategory | {860BB310-5D01-11d0-BD3B-00A0C911CE86} | 詳細はMSDN ライブラリをご参照ください. | 入力フィルタのカテゴリ |
FilterInfo | CFviFilterInfoの初期値 | CFviFilterInfoのインスタンス | 入力フィルタ - フィルタ情報 |
FilterPinInfo | CFviPinInfoの初期値 | CFviPinInfoのインスタンス | 入力フィルタ - ピン情報 |
FilterFormatInfo | CFviFormatInfoの初期値 | CFviFormatInfoのインスタンス | 入力フィルタ - フォーマット情報 |
SampleFormatInfo | FormatType = RGB24, Width=0, Height=0 | CFviFormatInfoのインスタンス | サンプルグラバー - フォーマット情報 |
RenderID | {C1F400A4-3F08-11D3-9F0B-006008039E37} | 詳細はMSDN ライブラリをご参照ください. | レンダーのクラス識別子 |
参照:
Microsoft DirectShow リファレンス(定数とGUID)
http://msdn.microsoft.com/ja-jp/library/cc353361.aspx (2010年6月現在)
Examples
保存するデバイス情報により、接続時の動作が異なります。 指定のデバイスについての情報を保存する場合と、デバイス番号のみ保存する場合があります。
ソースコード1:
指定のデバイスについての情報を保存する例です。
該当するデバイスが接続されていない場合は、接続時に例外が発行されます。
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> /// <remarks> /// 指定のデバイスについての情報が保存した場合です. /// 該当のデバイスがないと、接続時に例外となります. /// </remarks> [FvPluginExecute] public void GrabberParam_Name() { try { // 1) カメラ選択ダイアログの表示. FVIL.DS.SelectCameraForm form = new FVIL.DS.SelectCameraForm(); form.ShowDialog(); // 2) パラメータの取得. FVIL.DS.CFviGrabberParam param = form.GetParam(); // E) 確認. Console.Out.WriteLine("デバイス名 : {0}", param.FilterInfo.Name); // 3) パラメータの保存. string xmlfile = "..\\SampleCode\\DS\\DS.GrabberParam_Name.xml"; param.Save(xmlfile); // E) 確認. { // 1) インスタンスの生成. FVIL.DS.CFviGrabberUI grabber = new FVIL.DS.CFviGrabberUI(); // 2) パラメータの読込. FVIL.DS.CFviGrabberParam loadparam = new CFviGrabberParam(); loadparam.Load(xmlfile); grabber.Controller.Create(loadparam); // 3) 画像取り込み用バッファの設定. grabber.Controller.ImageType = FVIL.ImageType.RGB24; for (int index = 0; index < 3; index++) grabber.Controller.Images.Add(new FVIL.Data.CFviImage()); grabber.Controller.Validate(); // 4) 入力の開始. grabber.Controller.Run(); // 5) 1フレーム取り込み完了まで待機. if (!grabber.Controller.Wait(1000)) { Console.WriteLine("TimeOut"); } // 6) 入力の停止. grabber.Controller.Stop(); // E) 画像の保存. FVIL.File.Function.SaveImageFile(Defs.ResultDir + "/DS.GrabberParam_Name.bmp", grabber.Controller.LastImage); } } catch (FVIL.CFviException ex) { Console.WriteLine("Function:{0} Error:{1}", ex.Function, ex.ErrorCode); } } } } |
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> ''' <remarks> ''' 指定のデバイスについての情報が保存した場合です. ''' 該当のデバイスがないと、接続時に例外となります. ''' </remarks> <FvPluginExecute> _ Public Sub GrabberParam_Name() Try ' 1) カメラ選択ダイアログの表示. Dim form As New FVIL.DS.SelectCameraForm() form.ShowDialog() ' 2) パラメータの取得. Dim param As FVIL.DS.CFviGrabberParam = form.GetParam() ' E) 確認. Console.Out.WriteLine("デバイス名" & vbTab & ": {0}", param.FilterInfo.Name) ' 3) パラメータの保存. Dim xmlfile As String = "..\SampleCode\DS\DS.GrabberParam_Name.xml" param.Save(xmlfile) ' E) 確認. If True Then ' 1) インスタンスの生成. Dim grabber As New FVIL.DS.CFviGrabberUI() ' 2) パラメータの読込. Dim loadparam As FVIL.DS.CFviGrabberParam = New CFviGrabberParam() loadparam.Load(xmlfile) grabber.Controller.Create(loadparam) ' 3) 画像取り込み用バッファの設定. grabber.Controller.ImageType = FVIL.ImageType.RGB24 For index As Integer = 0 To 2 grabber.Controller.Images.Add(New FVIL.Data.CFviImage()) Next grabber.Controller.Validate() ' 4) 入力の開始. grabber.Controller.Run() ' 5) 1フレーム取り込み完了まで待機. If Not grabber.Controller.Wait(1000) Then Console.WriteLine("TimeOut") End If ' 6) 入力の停止. grabber.Controller.[Stop]() ' E) 画像の保存. FVIL.File.[Function].SaveImageFile(Defs.ResultDir & "/DS.GrabberParam_Name.bmp", grabber.Controller.LastImage) End If Catch ex As FVIL.CFviException Console.WriteLine("Function:{0} Error:{1}", ex.[Function], ex.ErrorCode) End Try End Sub End Class End Namespace |
保存したファイルは次のようになります.
Xml | Copy |
---|---|
<?xml version="1.0"?> <CFviGrabberParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <FilterCategory>{860BB310-5D01-11d0-BD3B-00A0C911CE86}</FilterCategory> <FilterInfo> <Name>USB ビデオ デバイス</Name> <CLSID>{17CCA71B-ECD7-11D0-B908-00A0C9223196}</CLSID> <Index>0</Index> </FilterInfo> <FilterPinInfo> <Name>キャプチャ</Name> <Direction>PINDIR_OUTPUT</Direction> </FilterPinInfo> <FilterFormatInfo> <MediaType>{73646976-0000-0010-8000-00AA00389B71}</MediaType> <MediaSubType>{32595559-0000-0010-8000-00AA00389B71}</MediaSubType> <FormatType>{05589F80-C356-11CE-BF01-00AA0055595A}</FormatType> <VideoSize> <Width>640</Width> <Height>480</Height> </VideoSize> </FilterFormatInfo> <SampleFormatInfo> <MediaType>{73646976-0000-0010-8000-00AA00389B71}</MediaType> <MediaSubType>{E436EB7D-524F-11CE-9F53-0020AF0BA770}</MediaSubType> <FormatType>{05589F80-C356-11CE-BF01-00AA0055595A}</FormatType> <VideoSize> <Width>0</Width> <Height>0</Height> </VideoSize> </SampleFormatInfo> <RenderID>{C1F400A4-3F08-11D3-9F0B-006008039E37}</RenderID> </CFviGrabberParam> |
ソースコード2:
デバイス番号を保存する例です。
接続時のデバイス構成により、選択されるデバイスが異なることになりますが、
指定したパラメータ(この場合は、特定のサンプルグラバー - フォーマット)に対応していれば、
機種やメーカーに関わらず接続を開始することができます。
ただしデバイス番号が デバイスリストの大きさを超える値の場合には、接続時に例外が発行されます。
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> /// <remarks> /// デバイス番号を保存した場合です. /// この場合、特定のサンプルグラバー - フォーマットに対応しているデバイスであれば、接続に成功します. /// </remarks> [FvPluginExecute] public void GrabberParam_Index() { try { // 1) インスタンスの生成 FVIL.DS.CFviGrabberParam param = new FVIL.DS.CFviGrabberParam(); // 2) パラメータの指定. { // フィルタカテゴリ. param.FilterCategory = "{860BB310-5D01-11d0-BD3B-00A0C911CE86}"; // フィルタ情報. param.FilterInfo.Index = 0; // ピン情報. param.FilterPinInfo.Direction = PIN_DIRECTION.PINDIR_OUTPUT; // サンプルグラバー - フォーマット情報. param.SampleFormatInfo.MediaType = "{73646976-0000-0010-8000-00AA00389B71}"; param.SampleFormatInfo.MediaSubType = "{E436EB7D-524F-11CE-9F53-0020AF0BA770}"; param.SampleFormatInfo.FormatType = "{05589F80-C356-11CE-BF01-00AA0055595A}"; // レンダーのクラス識別子. param.RenderID = "{C1F400A4-3F08-11D3-9F0B-006008039E37}"; } // 3) パラメータの保存. string xmlfile = "..\\SampleCode\\DS\\DS.GrabberParam_Index.xml"; param.Save(xmlfile); // E) 確認. { // 1) インスタンスの生成. FVIL.DS.CFviGrabberUI grabber = new FVIL.DS.CFviGrabberUI(); // 2) パラメータの読込. FVIL.DS.CFviGrabberParam loadparam = new CFviGrabberParam(); loadparam.Load(xmlfile); grabber.Controller.Create(loadparam); // 3) 画像取り込み用バッファの設定. grabber.Controller.ImageType = FVIL.ImageType.RGB24; for (int index = 0; index < 3; index++) grabber.Controller.Images.Add(new FVIL.Data.CFviImage()); grabber.Controller.Validate(); // 4) 入力の開始. grabber.Controller.Run(); // 5) 1フレーム取り込み完了まで待機. if (!grabber.Controller.Wait(1000)) { Console.WriteLine("TimeOut"); } // 6) 入力の停止. grabber.Controller.Stop(); // E) 画像の保存. FVIL.File.Function.SaveImageFile(Defs.ResultDir + "/DS.GrabberParam_Index.bmp", grabber.Controller.LastImage); } } catch (FVIL.CFviException ex) { Console.WriteLine("Function:{0} Error:{1}", ex.Function, ex.ErrorCode); } } } } |
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> ''' <remarks> ''' デバイス番号を保存した場合です. ''' この場合、特定のサンプルグラバー - フォーマットに対応しているデバイスであれば、接続に成功します. ''' </remarks> <FvPluginExecute> _ Public Sub GrabberParam_Index() Try ' 1) インスタンスの生成 Dim param As New FVIL.DS.CFviGrabberParam() ' 2) パラメータの指定. If True Then ' フィルタカテゴリ. param.FilterCategory = "{860BB310-5D01-11d0-BD3B-00A0C911CE86}" ' フィルタ情報. param.FilterInfo.Index = 0 ' ピン情報. param.FilterPinInfo.Direction = PIN_DIRECTION.PINDIR_OUTPUT ' サンプルグラバー - フォーマット情報. param.SampleFormatInfo.MediaType = "{73646976-0000-0010-8000-00AA00389B71}" param.SampleFormatInfo.MediaSubType = "{E436EB7D-524F-11CE-9F53-0020AF0BA770}" param.SampleFormatInfo.FormatType = "{05589F80-C356-11CE-BF01-00AA0055595A}" ' レンダーのクラス識別子. param.RenderID = "{C1F400A4-3F08-11D3-9F0B-006008039E37}" End If ' 3) パラメータの保存. Dim xmlfile As String = "..\SampleCode\DS\DS.GrabberParam_Index.xml" param.Save(xmlfile) ' E) 確認. If True Then ' 1) インスタンスの生成. Dim grabber As New FVIL.DS.CFviGrabberUI() ' 2) パラメータの読込. Dim loadparam As FVIL.DS.CFviGrabberParam = New CFviGrabberParam() loadparam.Load(xmlfile) grabber.Controller.Create(loadparam) ' 3) 画像取り込み用バッファの設定. grabber.Controller.ImageType = FVIL.ImageType.RGB24 For index As Integer = 0 To 2 grabber.Controller.Images.Add(New FVIL.Data.CFviImage()) Next grabber.Controller.Validate() ' 4) 入力の開始. grabber.Controller.Run() ' 5) 1フレーム取り込み完了まで待機. If Not grabber.Controller.Wait(1000) Then Console.WriteLine("TimeOut") End If ' 6) 入力の停止. grabber.Controller.[Stop]() ' E) 画像の保存. FVIL.File.[Function].SaveImageFile(Defs.ResultDir & "/DS.GrabberParam_Index.bmp", grabber.Controller.LastImage) End If Catch ex As FVIL.CFviException Console.WriteLine("Function:{0} Error:{1}", ex.[Function], ex.ErrorCode) End Try End Sub End Class End Namespace |
保存したファイルは次のようになります.
Xml | Copy |
---|---|
<?xml version="1.0"?> <CFviGrabberParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <FilterCategory>{860BB310-5D01-11d0-BD3B-00A0C911CE86}</FilterCategory> <FilterInfo> <Name /> <CLSID /> <Index>0</Index> </FilterInfo> <FilterPinInfo> <Name /> <Direction>PINDIR_OUTPUT</Direction> </FilterPinInfo> <FilterFormatInfo> <MediaType /> <MediaSubType /> <FormatType /> <VideoSize> <Width>0</Width> <Height>0</Height> </VideoSize> </FilterFormatInfo> <SampleFormatInfo> <MediaType>{73646976-0000-0010-8000-00AA00389B71}</MediaType> <MediaSubType>{E436EB7D-524F-11CE-9F53-0020AF0BA770}</MediaSubType> <FormatType>{05589F80-C356-11CE-BF01-00AA0055595A}</FormatType> <VideoSize> <Width>0</Width> <Height>0</Height> </VideoSize> </SampleFormatInfo> <RenderID>{C1F400A4-3F08-11D3-9F0B-006008039E37}</RenderID> </CFviGrabberParam> |
Inheritance Hierarchy
FVIL.DS..::..CFviGrabberParam