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 ROI・Binning・VideoFormatの設定
    • 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
    ()

デバイス設定ダイアログの作成

概要

PCに接続したデバイスを設定するためのダイアログ画面のコーディング方法について説明します。
IC Imaging ControlではShowDeviceSettingsDialogメソッドが用意されています。
下記の1行のコーディングだけで下図のデバイスダイアログ画面を呼び出すことができます。

// ダイアログを表示させる
ICImagingControl1.ShowDeviceSettingsDialog();

デバイスの設定からプロパティの変更まで行えるダイアログ画面が呼び出されますが、ここではこのダイアログ画面をカスタマイズする方法について説明します。

サンプルプログラム

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

実行結果

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

[Making Device Setting]フォーム

画面にあるそれぞれのボタンなどのコントローラの機能は下記の通りです。

[Device]ボタン [Custom Device Settings Dialog]画面を開きます。
[Start Live]ボタン ライブストリームを開始します。
[Stop Live]ボタン ライブストリームを停止します。

icImagingControl1のライブストリームを開始、ライブストリームを停止、Custom Device Settings Dialog画面を開く、いずれか3種類の動作となります。[Device]ボタンをクリックした時cmdDevice_Clickイベントの時で違うフォームでicImagingControlを制御するためにicImagingControlのオブジェクトを引き渡す必要があります。

//フォームをクリックした時
private void Form1_Load( object sender, System.EventArgs e )
{
    cmdStartLive.Enabled = icImagingControl1.DeviceValid;
    cmdStopLive.Enabled = false;
    cmdDevice.Enabled = true;
    icImagingControl1.LiveDisplayDefault = false;
    icImagingControl1.LiveDisplaySize = icImagingControl1.Size;
}
//Deviceボタンをクリックした時
private void cmdDevice_Click( object sender, System.EventArgs e )
{

    using( frmDeviceSettings DeviceDialog = new frmDeviceSettings( icImagingControl1 ) )
    {
        DeviceDialog.ShowDialog();
    }
    cmdStartLive.Enabled = true;
    cmdStopLive.Enabled = false;
    cmdDevice.Enabled = false;
}

//Start Liveボタンをクリックした時
private void cmdStartLive_Click( object sender, System.EventArgs e )
{
    try
    {
        icImagingControl1.LiveStart();
        cmdStartLive.Enabled = false;
        cmdStopLive.Enabled = true;
        cmdDevice.Enabled = false;
    }
    catch( Exception ex )
    {
        MessageBox.Show( ex.Message );
    }
}

//Stop Liveボタンをクリックした時
private void cmdStopLive_Click( object sender, System.EventArgs e )
{
    try
    {
        icImagingControl1.LiveStop();
        cmdStartLive.Enabled = true;
        cmdStopLive.Enabled = false;
        cmdDevice.Enabled = true;
    }
    catch( Exception ex )
    {
        MessageBox.Show( ex.Message );
    }
}

[Custom Device Settings Dialog]フォーム

[Device]リストボックス 接続されたデバイスを一覧で表示します。
[Video Norm]リストボックス 選択中のデバイスで対応するビデオ規格の一覧を返します
(DFG/USB2proなどのコンバータに対応)
[Video Format]リストボックス 解像度一覧を表示します。
[Frame Rate]リストボックス 選択できるフレームレート一覧を表示します。
[Input Channel]リストボックス 画像取り込みデバイスの入力チャンネルを返します。
(DFG/USB2proなどのコンバータに対応)
[Serial Number]テキストボックス 接続されたデバイスのシリアル番号を表示します。(書き込み不可)
[Flip Vertical]チェックボックス ライブ画像の垂直反転を返す、または設定します。
[Flip horizontal]チェックボックス ライブ画像の水平反転を返す、または設定します。
[OK]ボタン 設定した内容を反映し[Custom Device Settings Dialog]フォームを閉じます。
[Cancel]ボタン 設定した内容を反映せずに[Custom Device Settings Dialog]フォームを閉じます。

[Custom Device Settings Dialog]フォーム起動時の処理

private TIS.Imaging.ICImagingControl imagingControl;
private string deviceState;

Making Device Settingフォームから引き継いだimagingControlオブジェクトを制御するためにMaking Device Settingフォームのクラス内で制御するためにグローバル変数として下記のように定義する必要があります。

その後、コンストラクタにてMaking Device Settingフォームから引き継いだICImagingControlオブジェクトをグローバル変数imagingControlに代入します。これでCustom Device Settings DialogフォームにてMaking Device SettingフォームのICImagingControlオブジェクトを制御できるようになります。

public frmDeviceSettings( TIS.Imaging.ICImagingControl ic )
{
    imagingControl = ic;
    InitializeComponent();
}
private void frmDeviceSettings_Load( object sender, EventArgs e )
{
    if( imagingControl.DeviceValid )
    {
        if( imagingControl.LiveVideoRunning )
        {
            lblErrorMessage.Text = "The device settings dialog is not available while the live video is running.\n\nStop the live video first.";
            lblErrorMessage.AutoSize = false;
            lblErrorMessage.Padding = new Padding( 8 );
            lblErrorMessage.SetBounds( 0, 0, 100, cmdOK.Top );
            lblErrorMessage.Dock = DockStyle.Top;
            lblErrorMessage.Visible = true;
            return;
        }
        else
        {
            lblErrorMessage.Visible = false;
        }
    }
    //デバイスの状態を保持
    SaveDeviceSettings();

    UpdateDevices();
}

frmDeviceSettingsがロードされたタイミングでデバイスの状態を確認します。
デバイス設定はライブストリーミングが停止した状態で設定しなければならないのでライブストリーミングがしたままの時にはラベルにライブ表示を停止するように表示をしています。

//デバイスの状態を保持
private void SaveDeviceSettings()
{
    deviceState = imagingControl.DeviceState;
}

SaveDeviceSettings関数にて"imagingControl.DeviceState"で現状のデバイス情報をグローバル変数deviceStateに保持するようにします。

private void UpdateDevices()
{
    cboDevice.Items.Clear();
    if( imagingControl.Devices.Length > 0 )
    {
        foreach( object Item in imagingControl.Devices )
        {
            cboDevice.Items.Add( Item.ToString() );
        }

        if( imagingControl.DeviceValid )
        {
            cboDevice.SelectedItem = imagingControl.Device;
        }
        else
        {
            cboDevice.SelectedIndex = 0;
        }
        cboDevice.Enabled = true;
    }
    else
    {
        cboDevice.Items.Add( not_available_text );
        cboDevice.Enabled = false;
        cboDevice.SelectedIndex = 0;
    }
}

UpdateDevicesではDeviceリストボックスで使用できるデバイス一覧をリストに追加するようにしています。

private void cboDevice_SelectedIndexChanged( object sender, System.EventArgs e )
{
    try
    {
        // Open the device
        if( cboDevice.Enabled )
        {
            imagingControl.Device = cboDevice.Text;

            string serial;
            if( imagingControl.DeviceCurrent.GetSerialNumber(out serial) )
            {
                txtSerial.Text = serial;
            }
            else
            {
                txtSerial.Text = not_available_text;
            }
        }
        // ビデオ規格に対応している機種かどうか確認(アナログコンバータなど)
        UpdateVideoNorms();
        UpdateInputChannels();
        UpdateFlip();
    }
    catch( Exception ex )
    {
        MessageBox.Show( ex.Message );
    }
}

[Device]リストボックスで選択することで下記のコントローラをそれぞれ更新するようにしています。

  • [Video Norm]リストボックス
  • [Video Format]リストボックス
  • [Frame Rate]リストボックス
  • [Input Channel]リストボックス
  • [Serial Number]テキストボックス
  • [Flip Vertical]チェックボックス
  • [Flip horizontal]チェックボックス
//ビデオ規格の適用(String型)
imagingControl.VideoNorm = cboVideoNorm.Text;

//解像度を適用(String型)
imagingControl.VideoFormat = cboVideoFormat.Text;

//フレームレートの設定(Float型)
imagingControl.DeviceFrameRate = (float)( System.Convert.ToDouble( cboFrameRate.Text ) );

//画像取り込みデバイスの入力チャンネルをを設定(String型)
imagingControl.InputChannel = cboInputChannel.Text;

//Serial Numberテキストボックス取得
imagingControl.DeviceCurrent.GetSerialNumber(out serial) //シリアル番号取得
txtSerial.Text = serial;

//ライブ画像の垂直反転を設定(Boolean型)
imagingControl.DeviceFlipVertical = ( chkFlipV.Checked == true );
//ライブ画像の水平反転を設定(Boolean型)
imagingControl.DeviceFlipHorizontal = ( chkFlipH.Checked == true );

Deviceリストボックスで選択したデバイスにVideo Formatやフレームレートを適用するのは下記の通りとなっております。
プロパティによってはString型、Float型、Boolean型だったりするので注意が必要です。

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

プログラマーズガイド:デバイス設定ダイアログの作成
IC Imaging Control_Ver3.5(C#/VB.NET) APIリファレンスマニュアル

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

Copyright © ARGO Corporation. All Rights Reserved.