IC Imaging Control 3.x .NET コンポーネントから4.0への移行
このセクションには、 IC Imaging Control 3.x .NET(.net/C#)を利用していたユーザー向けの、 IC Imaging Control 4 .NETに関する情報が記載されています。
主な違い
IC Imaging Control 4 .NETクラスライブラリは、IC Imaging Control 3.x .NETコンポーネントの後継ですが、ソースコードに互換性はありません。
ビデオフォーマットや固定フレームレートなど、多くのDirectShow 固有の概念のサポートは廃止されました。
また、フレームフィルター、デベイヤリング構成など、使用頻度の低かった機能は削除されました。
IC Imaging Control 4 .NETは、.NET Framework 4.5と.NET 6.0以降と互換性があります。
IC Imaging Control 3.x .NETはDirectShowデバイスをサポートしていましたが、IC Imaging Control 4 .NETは、ドライバーインターフェイスとしてマシンビジョン標準のGenICam GenTLを使用します。これにより、非同期デバイスイベントやチャンクデータなどの高度なカメラ機能を使用できるようになりました。
継承している概念
デバイスとストリームの処理
TIS.Imaging.ICImagingControl
クラスと同様に、Grabberクラスは開かれたビデオキャプチャデバイスと、そのデバイスで有効になっている可能性のあるデータストリームを表します。
Windowsフォームコントロールに表示
WinForms.Displayコントロールを使用して、Windowsフォームアプリケーションで画像を表示します。
シンクタイプを介した画像へのアクセス
IC Imaging Control 3.5 と同様に、ビデオキャプチャデバイスからの画像はSinkオブジェクトに流れ込み、そこからアクセスできます。SnapSinkとQueueSinkの両方が使用可能であり、以前からのユーザーにとっては使い慣れたFrameSnapSink
とFrameQueueSink
です。
概念の変更
デバイスの列挙
IC Imaging Control 4 .NETには、デバイス名のフラットなリストのみを提供するのではなく、デバイス列挙子クラス(DeviceEnum)が含まれています。
デバイス列挙子を使用すると、ビデオキャプチャデバイスを列挙し、DeviceInfoを通じてデバイス情報を公開できます。
また、GigEVisionやUSB3 Visionデバイスが接続されているネットワークアダプターやUSBコントローラーに関する情報など、システムトポロジに関する情報も提供します。
デバイスのプロパティ
VCDPropertyインターフェイスは、新しいオブジェクト指向 API に置き換えられました(デバイスプロパティへのアクセスを参照)。
デバイスドライバーはGenICamを介してプロパティインターフェイスを記述するため、新しいプロパティ API は、説明、表示名、単位、ユーザーインターフェイスの表現のヒントなど、プロパティに関する豊富な情報を提供できます。
さらに、プロパティは値や可用性などのプロパティの側面が変更されたときにプログラムに通知するコールバックメカニズムを提供します。
ビデオフォーマット、ビデオ規格、フレームレート
ビデオ形式やフレームレートを列挙するAPI関数はなくなりました。
代わりに、画像サイズとフレームレートは、Width
およびHeight
デバイス、AcquisitionFrameRate
プロパティを使用して構成されます。
ビデオファイル
ビデオエンコード機能はGrabberから切り離され、代わりにSinkを使用してキャプチャされた画像を保存するVideoWriterを使用してキャプチャされた画像を保存するVideoWriterオブジェクトを利用します。
画面表示
IC Imaging Control 3.x では、画面表示はICImagingControl
に暗黙的に組み込まれていました。
IC 4では、Grabber.StreamSetupまたはそのオーバーロードを呼び出すときに、Displayを作成し、データストリームにアタッチできます。ディスプレイは、選択したImageBufferオブジェクトを手動で表示するためにも使用できます。
表示機能は、汎用のEmbeddedDisplayクラスとFloatingDisplayクラスを通じて利用できます。
Windowsフォームアプリケーションの場合、専用のWinForms.Displayコントロールが利用できます。
リネームされた概念
ライブモード
3.x のライブモードに関連するグラバー関数は、2段階の初期化で構成されるGenICam GenTL 命名法と一致するように名前が変更されました。最初にデータストリームが確立され、次にイメージの取得が開始されます。
ICImagingControl.LivePrepare
は、Grabber.StreamSetupとそのオーバーロードとほぼ同等です。ICImagingControl.LiveStart
は、おおよそGrabber.AcquisitionStartとほぼ同等です。ICImagingControl.LiveSuspend
は、Grabber.AcquisitionStopと同等です。ICImagingControl.LiveStop
は、Grabber.StreamStopと同等です。ICImagingControl.IsLive
は、Grabber.IsAcquisitionActiveと同等です。
リネームされたデータ型
FrameType
はImageTypeに置き換えられました。IFrame
/FrameQueueBuffer
の役割は、ImageBufferオブジェクトによって果たされます。
以前のFrameType
のいくつかの要素、たとえばバッファサイズはイメージバッファ自体の一部になっています(ImageBuffer.BufferSize)。VideoCaptureDeviceItem
はDeviceInfoに置き換えられました。FrameQueueSink
はQueueSinkに置き換えられたため、動作が若干変更されました。FrameSnapSink
はSnapSinkに置き換えられたため、動作が若干変更されました。
新しいプロパティAPI
VCDPropertyItems
はPropertyMapに置き換えられ、これにはプロパティの列挙に加えて、プロパティに直接アクセスするためのメソッドも含まれています。VCDRangeProperty
はPropIntegerに置き換えられました。VCDAbsValProperty
はPropFloatに置き換えられました。VCDMapStringsProperty
はPropEnumerationに置き換えられました。VCDSwitchProperty
はPropBooleanに置き換えられました。