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プロパティの制御方法について説明します。
例として"Brightness" プロパティを使ってどのようにしてVCDプロパティを制御するのかを説明します。明るさのインターフェースを取得し、最大値、最小値、現在設定値、自動設定のオンオフのそれぞれの機能に「スライダー」や「チェックボックス」のコントローラーを割り当てて、Windows Form内で設定することで簡単にカメラのプロパティの制御が可能です。

サンプルプログラム

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

実行結果

BrightnessProperty(明るさの調整)

[Brightness]スライダー 明るさを設定
[Auto]チェックボタン 明るさの自動設定をオンオフを切り替える

グローバル変数の宣言

private TIS.Imaging.VCDRangeProperty _brightnessRange;
private TIS.Imaging.VCDSwitchProperty _brightnessSwitch;
//その他の例
private TIS.Imaging.VCDRangeProperty GainRange;
private TIS.Imaging.VCDSwitchProperty GainSwitch;
private TIS.Imaging.VCDAbsoluteValueProperty GainValue;
private TIS.Imaging.VCDMapStringsProperty WhiteBalancMapStrings;
private TIS.Imaging.VCDButtonProperty SoftwareTrigger;
Dim BrightnessProperty As VCDRangeProperty

値と自動設定のインターフェースとなるグローバル変数を宣言してください。
プロパティを操作する為には適切な項目、要素、インターフェースを呼び出す必要があります。Switch、Range、AbsoluteValue、Button、MapStringのどの型なのかを確認し、それぞれに対応した呼び出し方、また関連するユーザーコントロールを初期化するためにそれらインターフェースの現在の状態を取得します。

Form Loadでインターフェース割り当てとコントロール初期化

private void Form1_Load( object sender, EventArgs e )
{

    //スライダーとチェックボタンを無効化       
    sldBrightness.Enabled = false;
    chkBrightnessAuto.Enabled = false;

    //有効なビデオキャプチャデバイスが選択されているかどうかを確認
    if( !icImagingControl1.LoadShowSaveDeviceState("lastSelectedDeviceState.xml") )
    {
        MessageBox.Show("No device was selected.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
				this.Close();
        return;
    }

    //インタフェース割り当て(後述にて説明)
    InitBrightnessItem();

        if (_brightnessRange != null){
        //BrightnessRangeオブジェクトの現在の範囲と値でスライダーを初期化します
        sldBrightness.Enabled = true;
        sldBrightness.Minimum = _brightnessRange.RangeMin;
        sldBrightness.Maximum = _brightnessRange.RangeMax;
        sldBrightness.Value = _brightnessRange.Value;

        // BrightnessSwitchオブジェクトの初期化
        if( _brightnessSwitch != null )
        {
            chkBrightnessAuto.Enabled = true;
            sldBrightness.Enabled = !_brightnessSwitch.Switch;
            chkBrightnessAuto.Checked = _brightnessSwitch.Switch;
        }
        // ライブストリーム開始
        icImagingControl1.LiveStart();

    }
}

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    If IcImagingControl1.ShowDeviceSettingsDialog = DialogResult.OK Then
        IcImagingControl1.LiveStart()

        BrightnessProperty = IcImagingControl1.VCDPropertyItems.FindInterface(VCDGUIDs.VCDID_Brightness, VCDGUIDs.VCDElement_Value, VCDGUIDs.VCDInterface_Range)

        If Not BrightnessProperty Is Nothing Then
            'BrightnessRangeオブジェクトの現在の範囲と値でスライダーを初期化します
            trackBar1.Minimum = BrightnessProperty.RangeMin
            trackBar1.Maximum = BrightnessProperty.RangeMax
            'BrightnessSwitchオブジェクトの初期化
            trackBar1.Value = BrightnessProperty.Value
        Else
            System.Windows.Forms.MessageBox.Show("Brightness property is not available.", Me.Text, System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Information)
            trackBar1.Enabled = False
        End If
    Else
        System.Windows.Forms.MessageBox.Show("No device was selected.", Me.Text, System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Information)
        Me.Close()
    End If

End Sub

プロパティの調整をするのにはインターフェースが使われ、プロパティ項目のエレメントより取得することが可能です。 Form Loadのイベントの段階でInitBrightnessItemを呼び出し、BrightnessSwitchとBrightnessRangeのグローバル変数にVCDプロパティを割り当てます。その後、スライダーとチェックボックスを初期化しそれぞれのコントローラーで扱えるようにしています。

グローバル変数にインタフェースを割り当てる

private void InitBrightnessItem()
{
    //VCDPropertyItemsコレクションで明るさのプロパティをFindItemで取得
    //明るさが現在のビデオキャプチャデバイスでサポートされていない場合、例外がスローされます。
    TIS.Imaging.VCDPropertyItem brightness = icImagingControl1.VCDPropertyItems.FindItem( TIS.Imaging.VCDGUIDs.VCDID_Brightness );
    //>>
    if( brightness != null )
    {
        // brightnessRangeオブジェクトを使ってスライダーを初期化します
        _brightnessRange = brightness.Find&glt;TIS.Imaging.VCDRangeProperty>( TIS.Imaging.VCDGUIDs.VCDElement_Value );
        // brightnessSwitchオブジェクトを使ってスイッチボックスを初期化します
        _brightnessSwitch = brightness.Findglt;TIS.Imaging.VCDSwitchProperty>( TIS.Imaging.VCDGUIDs.VCDElement_Auto );

        //カメラの機能に明るさ自動調整機能がない場合にはエラーメッセージ
        if( _brightnessSwitch == null )
        {
            MessageBox.Show( "Automation of brightness is not supported by the current device!" );
        }
        //>>
    }

    // 明るさのプロパティにアクセスできなかった時にはエラーメッセージを表示
    if( brightness == null )
    {
        MessageBox.Show( "Brightness property is not supported by the current device!" );
    }
}

VCDPropertyItemを宣言し、VCDPropertyItems.FindItemメソッドを使って”Brightness”のインタフェースを宣言します。
明るさVCDPropertyItemを取得し、BrightnessSwitchとBrightnessRangeを割り当てます。
プロパティが存在しなかったり、カメラに明るさ自動設定がない場合にはエラーメッセージが表示されるようにしています。

コントローラーのイベントハンドラーに設定する

//チェックボックスにチェックを入れた時に発火するイベント
private void chkBrightnessAuto_CheckedChanged( object sender, EventArgs e )
{
    _brightnessSwitch.Switch = chkBrightnessAuto.Checked;
    sldBrightness.Enabled = !chkBrightnessAuto.Checked;
}

//スライダーを変更した時に発火するイベント
private void sldBrightness_Scroll( object sender, EventArgs e )
{
    _brightnessRange.Value = sldBrightness.Value;
}
Private Sub trackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trackBar1.Scroll
    BrightnessProperty.Value = trackBar1.Value
End Sub

上記のようにチェックボックスとスライダーを変更した時に、それぞれのプロパティのエレメント連動するようにすればWindows Formからのアクセスが簡単にできます。

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

プログラマーズガイド:VCDプロパティの基本機能
IC Imaging Control_Ver3.5(C#/VB.NET) APIリファレンスマニュアル

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

Copyright © ARGO Corporation. All Rights Reserved.