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
    ()

スクロールとズーム

概要

IC Imaging Controlにおけるスクロールとズーム機能の使用について説明します。

サンプルプログラム

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

実行結果

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

[Start]ボタン ライブストリーミングを開始します。
[Stop]ボタン ライブストリーミングを停止します。
[Device]ボタン デバイスダイアログを表示します。
[Setting]ボタン プロパティダイアログを表示します。
[Default Window Size]チェックボックス 取得した画像のデフォルトのサイズに設定・解除します。
[Scrollbars]チェックボックス スクロールバーを表示します。

初期設定

private void Form1_Load( object sender, EventArgs e )
{

    cmdStart.Enabled = false;
    cmdStop.Enabled = false;
    cmdImageSettings.Enabled = false;
    chkDisplayDefault.Enabled = false;
    chkScrollbarsEnable.Enabled = false;
    sldZoom.Enabled = false;
    lblZoom.Enabled = false;

    //Ctrlキーとマウスホイール操作でズーム、ズームアウトのイベントハンドラ
    this.icImagingControl1.MouseWheel+= new System.Windows.Forms.MouseEventHandler(this.icImagingControl1_MouseWheel);
}
 ※プログラムなし

フォームロードしたときに各ボタン、スライダー等を無効化し、Ctrlキーとマウスホイール操作でズーム、ズームアウトのイベントハンドラの処理が使えるように宣言しています。

[Device]ボタンクリックした時の処理

private void cmdDevice_Click(object sender, EventArgs e)
{
    if (icImagingControl1.DeviceValid)
    {
        if (icImagingControl1.LiveVideoRunning)
        {
            icImagingControl1.LiveStop();
        }
    }
    //デバイスダイアログを表示
    if (!icImagingControl1.LoadShowSaveDeviceState("lastSelectedDeviceState.xml"))
    {
        MessageBox.Show("No device was selected.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
        this.Close();
        return;
    }

    if (icImagingControl1.DeviceValid)
    {
        cmdStart.Enabled = true;
        cmdStop.Enabled = true;
        cmdImageSettings.Enabled = true;
        chkDisplayDefault.Enabled = true;
        chkScrollbarsEnable.Enabled = true;
        sldZoom.Enabled = true;
        lblZoom.Enabled = true;
        chkDisplayDefault.Checked = false;

        icImagingControl1.LiveDisplayDefault = false;
        icImagingControl1.LiveDisplaySize = icImagingControl1.VideoFormatCurrent.Size;

        chkScrollbarsEnable.Checked = icImagingControl1.ScrollbarsEnabled;

        //LiveDisplayDefault propertyを使ってズーム機能を有効化/無効化
        sldZoom.Enabled = !icImagingControl1.LiveDisplayDefault;
        sldZoom.Value = (int)(icImagingControl1.LiveDisplayZoomFactor * 10);
        lblZoomPercent.Text = (sldZoom.Value * 10).ToString() + "%";
    }
}
Private Sub cmdDevice_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDevice.Click
    If IcImagingControl1.DeviceValid Then
        If IcImagingControl1.LiveVideoRunning Then
            IcImagingControl1.LiveStop()
        End If
    End If
    IcImagingControl1.ShowDeviceSettingsDialog()
    If IcImagingControl1.DeviceValid Then
        cmdStart.Enabled = True
        cmdStop.Enabled = True
        cmdImageSettings.Enabled = True
        chkDisplayDefault.Enabled = True
        chkScrollbarsEnable.Enabled = True
        sldZoom.Enabled = True
        lblZoom.Enabled = True

        IcImagingControl1.LiveDisplayDefault = False
        chkDisplayDefault.Checked = False
        IcImagingControl1.LiveDisplaySize = IcImagingControl1.LiveDisplayOutputSize

        chkScrollbarsEnable.Checked = IcImagingControl1.ScrollbarsEnabled

        ' LiveDisplayDefault propertyを使ってズーム機能を有効化/無効化
        sldZoom.Enabled = Not IcImagingControl1.LiveDisplayDefault
        sldZoom.Value = IcImagingControl1.LiveDisplayZoomFactor * 10
        lblZoomPercent.Text = Str(sldZoom.Value * 10) + "%"
    End If
End Sub

デバイスダイアログでデバイスを選択後、各ボタンやスライダーなどのコントローラを有効化/無効化します。

その後現在のLiveDisplayZoomFactorプロパティでズーム比を取得し、sldZoomスライダーやlblZoomPercentテキストに反映する。

[Start]ボタンをクリックした時の処理

private void cmdStart_Click(object sender, EventArgs e)
{
    if( icImagingControl1.DeviceValid )
    {
        icImagingControl1.LiveStart();

        var ovb = icImagingControl1.OverlayBitmapAtPath[TIS.Imaging.PathPositions.Device];

        int width = icImagingControl1.VideoFormatCurrent.Width;
        int height = icImagingControl1.VideoFormatCurrent.Height;

        // 画像の周辺を赤い線で囲い左上にScroll and Zoom Sampleの文字を追加します。
        ovb.Enable = true;
        ovb.DrawLine( Color.FromArgb( 255, 0, 0 ), 0, 0, width - 1, 0 );
        ovb.DrawLine( Color.FromArgb( 255, 0, 0 ), width - 1, 0, width - 1, height - 1 );
        ovb.DrawLine( Color.FromArgb( 255, 0, 0 ), width - 1, height - 1, 0, height - 1 );
        ovb.DrawLine( Color.FromArgb( 255, 0, 0 ), 0, 0, 0, height );
        ovb.DrawText( Color.FromArgb( 255, 0, 0 ), 5, 5, "Scroll and Zoom Sample" );
    }
}
Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click
    With IcImagingControl1
        If .DeviceValid Then
            .LiveStart()

            Dim ovb As Object = IcImagingControl1.OverlayBitmapAtPath(TIS.Imaging.PathPositions.Device)

            '画像の周辺を赤い線で囲い左上にScroll and Zoom Sampleの文字を追加します。
            ovb.Enable = True
            ovb.DrawLine(Color.FromArgb(255, 0, 0), 0, 0, .LiveDisplayOutputSize.Width - 1, 0)
            ovb.DrawLine(Color.FromArgb(255, 0, 0), .LiveDisplayOutputSize.Width - 1, 0, .LiveDisplayOutputSize.Width - 1, .LiveDisplayOutputSize.Height - 1)
            ovb.DrawLine(Color.FromArgb(255, 0, 0), .LiveDisplayOutputSize.Width - 1, .LiveDisplayOutputSize.Height - 1, 0, .LiveDisplayOutputSize.Height - 1)
            ovb.DrawLine(Color.FromArgb(255, 0, 0), 0, 0, 0, .LiveDisplayOutputSize.Height)
            ovb.DrawText(Color.FromArgb(255, 0, 0), 5, 5, "Scroll and Zoom Sample")

        End If
    End With
End Sub

LiveStartメソッドでライブストリーミングを開始し、OverlayBitmapオブジェクトを使ってライブ画像上に図やテキストを描画します。画像の周辺を囲むようにDrawLineメソッドで赤い線を描き、画像の左上に"Scroll and Zoom Sample"をオーバーレイ表示します。

[Stop]ボタンをクリックした時の処理

private void cmdStop_Click(object sender, EventArgs e)
{
    icImagingControl1.LiveStop();
}
Private Sub cmdStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStop.Click
    IcImagingControl1.LiveStop()
End Sub

ライブストリーミングを停止する処理です。ICImagingControl.LiveStopメソッドだけで処理を完結できます。

[Setting]ボタンをクリックした時の処理

private void cmdImageSettings_Click(object sender, EventArgs e)
{
    icImagingControl1.ShowPropertyDialog();
}
Private Sub cmdImageSettings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdImageSettings.Click
    IcImagingControl1.ShowPropertyDialog()
End Sub

ShowPropertyDialogメソッドを使って、現在接続中のデバイスの全プロパティを調整するためのダイアログを表示します。

[Default Window Size]チェックボックスをクリックした時の処理

private void chkDisplayDefault_CheckedChanged(object sender, EventArgs e)
{
    icImagingControl1.LiveDisplayDefault = chkDisplayDefault.Checked;
    sldZoom.Value = (int)(icImagingControl1.LiveDisplayZoomFactor * 10.0f);
    lblZoomPercent.Text = (sldZoom.Value * 10).ToString() + "%";
    sldZoom.Enabled = !chkDisplayDefault.Checked;
}
Private Sub chkDisplayDefault_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkDisplayDefault.CheckedChanged
    IcImagingControl1.LiveDisplayDefault = chkDisplayDefault.Checked
    sldZoom.Value = IcImagingControl1.LiveDisplayZoomFactor * 10
    lblZoomPercent.Text = Str(sldZoom.Value * 10) + "%"
    sldZoom.Enabled = Not IcImagingControl1.LiveDisplayDefault
End Sub

取得した画像のデフォルトのサイズに設定・解除をする機能です。
LiveDisplayZoomFactorでIC Imaging Controlで表示しているズーム比を取得し、sldZoomスライダーとlblZoomPercentテキストに反映させます。

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

private void chkScrollbarsEnable_CheckedChanged(object sender, EventArgs e)
{
    icImagingControl1.ScrollbarsEnabled = chkScrollbarsEnable.Checked;
}
Private Sub chkScrollbarsEnable_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkScrollbarsEnable.CheckedChanged
    IcImagingControl1.ScrollbarsEnabled = chkScrollbarsEnable.Checked
End Sub

IC Imaging Controlのウィンドウがライブ画像ウィンドウよりも小さい場合、ScrollbarsEnabled プロパティをTrueにするだけでスクロールバーが表示されます。

マウスホイールで操作した時の処理

//Ctrlキーとマウスホイール操作した時の処理
private void icImagingControl1_MouseWheel(object sender, MouseEventArgs e)
{

    //Ctrl キーが押された状態であるか確認
    if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
    {
        if(icImagingControl1.LiveDisplayDefault == false) { 
            int value = (e.Delta * SystemInformation.MouseWheelScrollLines / 120) + sldZoom.Value;
            if (sldZoom.Maximum >= value && sldZoom.Minimum <= value)
            {
                sldZoom.Value = value;
                icImagingControl1.LiveDisplayZoomFactor = (float)sldZoom.Value / 10.0f;
                lblZoomPercent.Text = (sldZoom.Value * 10).ToString() + "%";

            }
        }
    }

}

Ctrlキーとマウスホイールを使ったときに処理するイベントハンドラとなります。
icImagingControl1のコントローラにフォーカスがあった状態でCtrlキーを押しながらマウスホイールを動かかしたときに処理が変わります。
LiveDisplayZoomFactorプロパティをつかってフレームのズーム比を設定します。

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

プログラマーズガイド: スクロールとズーム
IC Imaging Control_Ver3.5(C#/VB.NET) APIリファレンスマニュアル

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

Copyright © ARGO Corporation. All Rights Reserved.