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オブジェクトに流れ込み、そこからアクセスできます。SnapSinkQueueSinkの両方が使用可能であり、以前からのユーザーにとっては使い慣れたFrameSnapSinkFrameQueueSinkです。

概念の変更

デバイスの列挙

IC Imaging Control 4 .NETには、デバイス名のフラットなリストのみを提供するのではなく、デバイス列挙子クラス(DeviceEnum)が含まれています。

デバイス列挙子を使用すると、ビデオキャプチャデバイスを列挙し、DeviceInfoを通じてデバイス情報を公開できます。

また、GigEVisionUSB3 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 命名法と一致するように名前が変更されました。最初にデータストリームが確立され、次にイメージの取得が開始されます。

リネームされたデータ型

  • FrameTypeImageTypeに置き換えられました。
  • IFrame/FrameQueueBufferの役割は、ImageBufferオブジェクトによって果たされます。
    以前のFrameTypeのいくつかの要素、たとえばバッファサイズはイメージバッファ自体の一部になっています(ImageBuffer.BufferSize)。
  • VideoCaptureDeviceItemDeviceInfoに置き換えられました。
  • FrameQueueSinkQueueSinkに置き換えられたため、動作が若干変更されました。
  • FrameSnapSinkSnapSinkに置き換えられたため、動作が若干変更されました。

新しいプロパティAPI

  • VCDPropertyItemsPropertyMapに置き換えられ、これにはプロパティの列挙に加えて、プロパティに直接アクセスするためのメソッドも含まれています。
  • VCDRangePropertyPropIntegerに置き換えられました。
  • VCDAbsValPropertyPropFloatに置き換えられました。
  • VCDMapStringsPropertyPropEnumerationに置き換えられました。
  • VCDSwitchPropertyPropBooleanに置き換えられました。