IC Imaging Control 3.x C++クラスライブラリからの移行

このセクションでは、IC Imaging Control 3.x C++クラスライブラリのユーザーの視点からIC Imaging Control 4 C++ライブラリに関する情報を記載しています。

主な違い

IC Imaging Control 4 C++クラスライブラリは、IC Imaging Control 3.xクラスライブラリの精神的後継ですが、ソースコードの互換性はありません。ビデオフォーマットや固定フレームレートといった、多くのDirectShow特有の概念のサポートは廃止されました。フレームフィルタやデベイヤー設定といった、あまり使用されない機能も削除されました。

IC Imaging Control 4 C++クラスライブラリは、WindowsおよびLinuxの複数のプラットフォームで利用可能です。

IC Imaging Control 3.x C++クラスライブラリはDirectShowデバイスをサポートしていましたが、IC Imaging Control 4 C++クラスライブラリはマシンビジョン標準であるGenICam GenTLをドライバインターフェースとして使用します。これにより、非同期デバイスイベントやチャンクデータといった高度なカメラ機能を使用できます。

移行のヒント

引き継がれた概念

Grabber

バージョン3.xのGrabberクラスと同様に、ic4::Grabberクラスは、開かれたビデオキャプチャデバイスと、有効化される可能性のあるそのデータストリームを表します。

変更された概念

Device Enumeration(デバイス列挙)

IC Imaging Control 4 C++クラスライブラリは、デバイス名のフラットなリストを提供する代わりに、デバイスエニュメレータクラス(ic4::DeviceEnum)を提供します。

デバイスエニュメレータを使用することで、ビデオキャプチャデバイスを列挙し、ic4::DeviceInfoを通じてデバイス情報を公開できます。また、GigE VisionUSB3 Visionデバイスが接続されているネットワークアダプターやUSBコントローラーに関する情報など、システムトポロジーに関する情報も提供します。

デバイスプロパティ

VCDPropertyインターフェースは、新しいオブジェクト指向APIに置き換えられました(デバイスプロパティへのアクセスを参照)。デバイスドライバはGenICamを介してプロパティインターフェースを記述するため、新しいプロパティAPIは説明、表示名、単位など、プロパティに関する豊富な情報を提供できます。

さらに、プロパティは値や利用可能性といった側面が変化した際に、プログラムに通知するコールバックメカニズムを提供します。

ビデオフォーマット、ビデオ規格、フレームレート

ビデオフォーマットやフレームレートを列挙するためのAPI関数は廃止されました。代わりに、画像サイズとフレームレートはWidthHeightAcquisitionFrameRateデバイスプロパティを使用して設定されます。

ビデオファイル

ビデオエンコーディング機能はGrabberから分離されました。代わりに、ic4::Sinkを使用してキャプチャされた画像を保存するには、ic4::VideoWriterオブジェクトを作成してください。

Display

バージョン3.xでは、DisplayはGrabberの暗黙的な一部でした。IC 4.0では、ic4::Displayを作成し、ic4::Grabber::streamSetup()の呼び出し時にデータストリームへアタッチする必要があります。Displayは、選択されたic4::ImageBufferオブジェクトの手動表示にも使用できます。

名称変更された概念

ライブモード

3.xでライブモードに関連していたGrabberの関数は、2段階の初期化(まずデータストリームを確立し、次に画像取得を開始する)からなるGenICam GenTLの命名規則に合わせて改名されました。

データ型

  • FrameTypeInfoic4::ImageType に置き換えられました。
  • IFrame/FrameQueueBuffer の役割は ic4::ImageBuffer オブジェクトが担います。以前の FrameTypeInfo の一部の側面(例えばバッファサイズ)は、現在ではImageBuffer自体の一部になっています(ic4::ImageBuffer::bufferSize())。
  • VideoCaptureDeviceItemic4::DeviceInfo に置き換えられました。
  • FrameQueueSinkic4::QueueSink に置き換えられ、動作が若干変更されています。
  • FrameSnapSinkic4::SnapSink に置き換えられ、動作が若干変更されています。

プロパティAPI