IC Imaging Control (.NET C#/Visual Basic)

  • サンプルプログラムトップページ
  • デバイスのオープンとハンドリング
    • C# VB.NET カメラの映像を既存のアプリケーションに組み込む方法
    • C# VB.NET デバイスを開く
    • C# VB.NET デバイスの開閉
    • C# VB.NET ダイアログボックスを使用してデバイスを開く
    • C# VB.NET 複数のデバイスを開く
    • C# VB.NET デバイスのシリアル番号を読み取る
    • C# VB.NET ICImagingControlの標準プロパティダイアログの使用
    • C# VB.NET デバイスプロパティ設定の保存と復元
  • ライブ表示
    • C# VB.NET ライブ表示のリサイズ
    • C# VB.NET フルスクリーン表示
    • C# VB.NET 十字マークのオーバーレイ
    • C# VB.NET WFPでvideoWindowを使ったビデオ表示
  • フレームフィルタ
    • C# VB.NET 低輝度、高輝度ピクセルの強調 その1
    • C# VB.NET 低輝度、高輝度ピクセルの強調 その2
  • ライブ表示とマルチプロセス
    • C# VB.NET ライブ表示のみ
    • C# VB.NET 静止画保存
    • C# VB.NET 任意のタイミングで画像処理と静止画保存を同時に処理
    • C# VB.NET 録画しながら任意のタイミングで静止画保存
    • C# VB.NET 全フレームリアルタイム画像処理しながら
             NG判定を静止画保存
    • C# VB.NET 全フレームリアルタイム画像処理しながら
             NG判定を静止画保存、同時に録画
  • イメージの取得
    • C# VB.NET イメージデータの取得
    • C# VB.NET 静止画ファイル保存(BMP)
    • C# VB.NET 静止画ファイル保存(JPEG)
    • C# VB.NET 静止画ファイルの連番保存
    • C# VB.NET カメラ画像保存&FTPで任意のサーバーに転送する
    • C# VB.NET リングバッファを使用したイメージシーケンスの取得と再生
    • C# VB.NET 静止画とAVI動画保存
    • C# VB.NET メモリーレコーディング
             (高速カメラで撮影した現象をRAMメモリー領域に保存)
    • C# VB.NET ソフトウェアトリガーで画像を表示・保存
    • C# VB.NET 録画時間を指定したAVIファイル保存
    • C# VB.NET 外部トリガーで録画の開始
    • C# VB.NET 取得したイメージの輝度値をCSV形式で出力する
             (16bit対応)
  • 画像処理
    • C# VB.NET イメージデータへのアクセス
    • C# VB.NET コントラストの強調 - Part 1
    • C# VB.NET コントラストの強調 - Part 2
    • C# VB.NET コントラストの強調 - Part 3
    • C# VB.NET レーザーポインタの位置を特定する
    • C# VB.NET OpenCVの画像処理
             (アナログタコメーターのデジタル化)
    • C# VB.NET AIモデルを使ったリアルタイム処理
  • Version 3.5サンプル
    • C# VB.NET 関心領域の画像更新
      Advanced Image Processing
    • C# VB.NET 2値化
      Binarization
    • C# VB.NET 明るさの調整
      BrightnessProperty
    • C# VB.NET 動画保存(MediaStreamSink)
      Capturing a Video File
    • C# VB.NET 動画保存(AviStartCapture)
      Capturing an AVI File
    • C# VB.NET 共通ファイル
      Common
    • C# VB.NET オーバーレイの作成
      Creating an Overlay
    • C# VB.NET デモアプリ
      demoapp
    • C# VB.NET VCDプロパティ:GPIOプロパティ編
      DigitalIO
    • C# VB.NET コールバック関数を使ってバッファを表示させる
      Display Buffer
    • C# VB.NET フィルターの適用
      Filter Inspector
    • C# VB.NET 静止画をキャプチャし保存する
      Grabbing an Image
    • C# VB.NET イメージバッファの輝度値を読み込み、輝度反転処理を施す
      Image Processing
    • C# VB.NET VCDプロパティ:全プロパティ一覧を表示する編
      List VCDProperties
    • C# VB.NET デバイス設定ダイアログの作成
      Making Device Settings
    • C# VB.NET イメージバッファにアクセスする
      Pixelformat
    • C# VB.NET コーデックのプロパティを保存する
      Saving Codec Properties
    • C# VB.NET スクロールとズーム
      croll And Zoom
    • C# VB.NET VCDプロパティ:露光とゲイン編
      StandardProperties
    • C# VB.NET VCDプロパティ:ストロボアウト編
      Strobe
    • C# VB.NET VCDプロパティ:
             プロパティダイアログ画面のカスタマイズ編
      VCD Property Page
    • C# VB.NET VCDプロパティ:明るさとホワイトバランス編
      VCD Simple Property
    • C# VB.NET VCDプロパティ:オートフォーカス編
    • C# VB.NET デバイスの再接続方法とフレーム落ちの確認
  • リンク集

    ICImagingControl WEB APIリファレンスマニュアル/サンプルプログラム

    :日本語対応済み :日本語化準備中
    開発言語 APIリファレンスマニュアル サンプルプログラム
    C 4.0
    ()
    - - 4.0
    ()
    - -
    C++ 4.0
    ()
    3.5
    ()
    3.4
    ()
    4.0
    ()
    3.5 3.4
    ()
    C#/VB.NET 4.0
    ()
    3.5
    ()
    3.4
    ()
    4.0
    ()
    3.5
    ()
    3.4
    ()
    Python 4.0
    ()
    3.5 3.4
    ()
    4.0
    ()
    3.5 3.4
    ()

VCDプロパティ:露光とゲイン編

概要

IC Imaging ControlではTheImagingSource社のデバイスの機能にアクセスするためにVCDプロパティと呼ばれるクラスを用意しています。
ここではVCDプロパティの簡単な例として露光時間とゲインの実装方法について説明します。
VCDpropertyの設定方法については下記をご覧ください。

VCDpropertyの設定方法
IC Imaging Control Ver3.4(C#/VB.NET) サンプルプログラム

サンプルプログラム

Software IC Imaging Control 3.5, Visual Studio™ 2019
サンプル(C#) standard_properties_cs_3.5.zip

実行結果

Visual Studioのプログラム上ではすでにボタンの設置や関数は定義済ですので、IC Imaging Contorl3.5をインストールされていれば、実行ボタンだけですぐにデバッグで動作確認することができます。
画面にあるそれぞれのボタンなどのコントローラの機能は下記の通りです。

[Exposure]スライダー 露光時間を設定します。
[Exposure]チェックボックス 自動露光時間の機能を有効化/無効化します。
[Gain]スライダー ゲインを設定します。
[Gain]チェックボックス ゲインの機能を有効化/無効化します。

VCDプロパティの宣言

private TIS.Imaging.VCDAbsoluteValueProperty _exposureValue;
private TIS.Imaging.VCDSwitchProperty _exposureAuto;
private TIS.Imaging.VCDAbsoluteValueProperty _gainValue;
private TIS.Imaging.VCDSwitchProperty _gainAuto;

プロパティを操作する為には適切な項目、要素、インターフェースを呼び出す必要があり、VCDGUIDsと呼ばれるプロパティを特定するための識別子を使います。VCDGUIDsの中にはElement、Interface、Property Itemが含まれています。
スライダーやチェックボックスで操作しやすくするためにSwitch、AbsoluteValueのインターフェイスをグローバルオブジェクトとして宣言します。
インターフェースの一覧は下記にありますので詳細は下記をご確認ください。

constants.Standard Interface Identifier(標準インターフェース識別子)
IC Imaging Control_Ver3.5(C#/VB.NET) APIリファレンスマニュアル

初期設定

private void Form1_Load( object sender, EventArgs e )
{
    trackBarExposure.Enabled = false;
    checkBoxExposure.Enabled = false;
    trackBarGain.Enabled = false;
    checkBoxGain.Enabled = false;

    if( !icImagingControl1.LoadShowSaveDeviceState("lastSelectedDeviceState.xml") )
    {
        MessageBox.Show("No device was selected.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
        this.Close();
        return;
    }

    InitProperties();

    icImagingControl1.LiveStart();
}

フォームを起動した時に自動露光時間、自動ゲインをオフにしデバイスダイアログを表示します。

private void    InitProperties()
{
    _exposureValue = icImagingControl1.VCDPropertyItems.Find<VCDAbsoluteValueProperty>(VCDGUIDs.VCDID_Exposure, VCDGUIDs.VCDElement_Value);
    _exposureAuto = icImagingControl1.VCDPropertyItems.Find<VCDSwitchProperty>(VCDGUIDs.VCDID_Exposure, VCDGUIDs.VCDElement_Auto);
    _gainValue = icImagingControl1.VCDPropertyItems.Find<VCDAbsoluteValueProperty>(VCDGUIDs.VCDID_Gain, VCDGUIDs.VCDElement_Value);
    _gainAuto = icImagingControl1.VCDPropertyItems.Find<VCDSwitchProperty>(VCDGUIDs.VCDID_Gain, VCDGUIDs.VCDElement_Auto);

    if( _exposureValue != null )
    {
        trackBarExposure.Enabled = _exposureValue.Available && !_exposureValue.ReadOnly;
        trackBarExposure.Minimum = 0;
        trackBarExposure.Maximum = 100;
        trackBarExposure.Value = AbsoluteValueSliderHelper.AbsValToSliderPosLogarithmic(_exposureValue, _exposureValue.Value, 100);
    }
    if( _exposureAuto != null )
    {
        checkBoxExposure.Enabled = !_exposureAuto.ReadOnly;
        checkBoxExposure.Checked = _exposureAuto.Switch;
    }
    if( _gainValue != null )
    {
        trackBarGain.Enabled = _gainValue.Available && !_gainValue.ReadOnly;
        trackBarGain.Minimum = 0;
        trackBarGain.Maximum = 100;
        trackBarGain.Value = AbsoluteValueSliderHelper.AbsValToSliderPosLinear(_gainValue, _gainValue.Value, 100);
    }
    if( _gainAuto != null )
    {
        checkBoxGain.Enabled = !_gainAuto.ReadOnly;
        checkBoxGain.Checked = _gainAuto.Switch;
    }

}

デバイスを選択後、露光時間とゲインを設定するために冒頭で宣言したSwitch、AbsoluteValueのグローバルオブジェクトに適切なプロパティを割り当てます。
VCDPropertyItems.Findメソッドを使ってitem識別子とelement識別子を引数に割り当てることによりVCDPropertyInterfaceを取得できます。

_exposureValue = icImagingControl1.VCDPropertyItems.Find<VCDAbsoluteValueProperty>(VCDGUIDs.VCDID_Exposure, VCDGUIDs.VCDElement_Value);

例えば、上記の場合element識別子はVCDElement_Value、item識別子はVCDID_Exposureとなります。 なお、その他のelement識別子は下記をご覧ください。

constants.Standard Element Identifier(標準エレメント識別子)
IC Imaging Control_Ver3.5(C#/VB.NET) APIリファレンスマニュアル


item識別子は下記をご覧ください。

constants.Standard Property Item Identifier(標準プロパティアイテム識別子)
IC Imaging Control_Ver3.5(C#/VB.NET) APIリファレンスマニュアル

IC Imaging Control3.5からVCDIDクラスのVCDPropertyItems.FindItemは非推奨となっていますのでご注意ください。

 インターフェースを割り当てれば冒頭で宣言したインターフェースクラスのプロパティを操作することで値を変えることができます。

[Exposure]チェックボックスをチェックした時の処理

private void CheckBoxExposure_CheckedChanged( object sender, EventArgs e )
{
    _exposureAuto.Switch = checkBoxExposure.Checked;
    trackBarExposure.Enabled = _exposureValue != null && _exposureValue.Available && !_exposureValue.ReadOnly;
}

[Exposure]スライダーをスクロールした時の処理

private void TrackBarExposure_Scroll( object sender, EventArgs e )
{
    _exposureValue.Value = AbsoluteValueSliderHelper.SliderPosToAbsValLogarithmic( _exposureValue, trackBarExposure.Value, 100 );
}

[Gain]チェックボックスをチェックした時の処理

private void CheckBoxGain_CheckedChanged( object sender, EventArgs e )
{
    _gainAuto.Switch = checkBoxGain.Checked;
    trackBarGain.Enabled = _gainValue != null && _gainValue.Available && !_gainValue.ReadOnly;
}

[Gain]スライダーをスクロールした時の処理

private void TrackBarGain_Scroll( object sender, EventArgs e )
{
    _gainValue.Value = AbsoluteValueSliderHelper.SliderPosToAbsValLinear(_gainValue, trackBarGain.Value, 100);
}

下記のAPIリファレンスマニュアルにもその他関数などの説明があります。

技術関連項目:VCDプロパティ
IC Imaging Control_Ver3.5(C#/VB.NET) APIリファレンスマニュアル

▲ このページの先頭に戻る

Copyright © ARGO Corporation. All Rights Reserved.