Assembly: FVILforms (in FVILforms.dll) Version: 3.1.0.0 (3.1.0.9)
Syntax
C# |
---|
public class CFviCameraControl |
Visual Basic |
---|
Public Class CFviCameraControl |
Remarks
このクラスは、
Graph に設定されたフィルタグラフが持つソースフィルタから、
Property に指定されたプロパティの設定と取得を行います。
詳しくは、DirectShow の IAMCameraControl インターフェースの説明をご参照ください。
現在は、下記のページに記載されています。
http://msdn.microsoft.com/ja-jp/library/cc354791.aspx (2010年12 現在)
Graph に設定されたフィルタグラフが
IAMCameraControl インターフェースを実装するソースフィルタを保有している必要があります。
無効な場合は、各プロパティの設定や取得を行う際に例外(NullReferencedException)が発行されます。
事前に有効性を確認するには
IsSupported(CFviGraph)
をご使用ください。
このメソッドは IAMCameraControl インターフェースを実装するか否かを検査します。
個別のプロパティ(Property に指定された種別)が
サポートされているか否かは検査しません。
初期値と範囲:
プロパティ | 初期値 | 範囲 | 説明 |
---|---|---|---|
Graph | null | IAMCameraControl インターフェースを実装するソースフィルタを持つグラフ | プロパティの設定または取得対象のフィルタグラフを示します。 通常は、CFviGrabber を指定してください。 |
Property | Pan | CameraControlProperty に定義された定数 | 設定または取得するプロパティの種別を示します。 カメラによってサポートされていない種別もあります。 カメラ固有の仕様についてはカメラメーカーにお問い合わせください。 |
プロパティの設定と取得:
以下のプロパティ及びメソッドは、 Graph に設定されたフィルタグラフが持つソースフィルタから、 Property に指定されたプロパティの設定と取得を行います。 Graph が無効な場合や IAMCameraControl インターフェースに対応していない場合は例外(NullReferencedException)が発生します。
プロパティの範囲と既定値の取得:
以下のプロパティ及びメソッドは、 Graph に設定されたフィルタグラフが持つソースフィルタから、 Property に指定されたプロパティの範囲と既定値の取得を行います。 Graph が無効な場合や IAMCameraControl インターフェースに対応していない場合は例外(NullReferencedException)が発生します。
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 CameraControl() { try { // 1) インスタンスの生成. FVIL.DS.CFviGrabber controller = new FVIL.DS.CFviGrabber(); // 2) グラフの生成. // この例では 0 番目のカメラに接続していますが、接続方法は任意です. controller.Create(0, 0); // 3) 画像取り込み用バッファの設定. controller.ImageType = FVIL.ImageType.RGB24; for (int index = 0; index < 3; index++) controller.Images.Add(new FVIL.Data.CFviImage()); controller.Validate(); // 4) カメラ制御. if (!FVIL.DS.CFviCameraControl.IsSupported(controller)) Console.WriteLine("このフィルタグラフは IAMCameraControl インターフェースをサポートしていません。"); else { // ここでは、露光時間と焦点距離を変更する例を示します. FVIL.DS.CFviCameraControl cc = new CFviCameraControl(controller); // 露光時間. try { cc.Property = CameraControlProperty.Exposure; Console.WriteLine("{0}", cc.Property.ToString()); Console.WriteLine("Min : {0}", cc.Min); Console.WriteLine("Max : {0}", cc.Max); Console.WriteLine("Step : {0}", cc.Step); Console.WriteLine("Default : {0}", cc.Default); Console.WriteLine("Value : {0}", cc.Value); Console.WriteLine("IsManual: {0}", cc.IsManual); cc.IsManual = true; cc.Value = -1; // -1=1/2sec } catch (System.Exception) { Console.WriteLine("露光時間: サポートされていません。"); } // 焦点距離. try { cc.Property = CameraControlProperty.Focus; Console.WriteLine("{0}", cc.Property.ToString()); Console.WriteLine("Min : {0}", cc.Min); Console.WriteLine("Max : {0}", cc.Max); Console.WriteLine("Step : {0}", cc.Step); Console.WriteLine("Default : {0}", cc.Default); Console.WriteLine("Value : {0}", cc.Value); Console.WriteLine("IsManual: {0}", cc.IsManual); cc.IsManual = true; cc.Value = 20; // 20mm } catch (System.Exception) { Console.WriteLine("焦点距離: サポートされていません。"); } } // 5) 入力の開始. controller.Run(); // 6) 1フレーム取り込み完了まで待機. if (!controller.Wait(10000)) { Console.WriteLine("TimeOut"); } // 7) 入力の停止. 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 CameraControl() Try ' 1) インスタンスの生成. Dim controller As New FVIL.DS.CFviGrabber() ' 2) グラフの生成. ' この例では 0 番目のカメラに接続していますが、接続方法は任意です. controller.Create(0, 0) ' 3) 画像取り込み用バッファの設定. controller.ImageType = FVIL.ImageType.RGB24 For index As Integer = 0 To 2 controller.Images.Add(New FVIL.Data.CFviImage()) Next controller.Validate() ' 4) カメラ制御. If Not FVIL.DS.CFviCameraControl.IsSupported(controller) Then Console.WriteLine("このフィルタグラフは IAMCameraControl インターフェースをサポートしていません。") Else ' ここでは、露光時間と焦点距離を変更する例を示します. Dim cc As FVIL.DS.CFviCameraControl = New CFviCameraControl(controller) ' 露光時間. Try cc.[Property] = CameraControlProperty.Exposure Console.WriteLine("{0}", cc.[Property].ToString()) Console.WriteLine("Min : {0}", cc.Min) Console.WriteLine("Max : {0}", cc.Max) Console.WriteLine("Step : {0}", cc.[Step]) Console.WriteLine("Default : {0}", cc.[Default]) Console.WriteLine("Value : {0}", cc.Value) Console.WriteLine("IsManual: {0}", cc.IsManual) cc.IsManual = True ' -1=1/2sec cc.Value = -1 Catch generatedExceptionName As System.Exception Console.WriteLine("露光時間: サポートされていません。") End Try ' 焦点距離. Try cc.[Property] = CameraControlProperty.Focus Console.WriteLine("{0}", cc.[Property].ToString()) Console.WriteLine("Min : {0}", cc.Min) Console.WriteLine("Max : {0}", cc.Max) Console.WriteLine("Step : {0}", cc.[Step]) Console.WriteLine("Default : {0}", cc.[Default]) Console.WriteLine("Value : {0}", cc.Value) Console.WriteLine("IsManual: {0}", cc.IsManual) cc.IsManual = True ' 20mm cc.Value = 20 Catch generatedExceptionName As System.Exception Console.WriteLine("焦点距離: サポートされていません。") End Try End If ' 5) 入力の開始. controller.Run() ' 6) 1フレーム取り込み完了まで待機. If Not controller.Wait(10000) Then Console.WriteLine("TimeOut") End If ' 7) 入力の停止. 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 |
Inheritance Hierarchy
FVIL.DS..::..CFviCameraControl