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

ROI・Binning・VideoFormatの設定

概要

本サンプルでは、フォームのロード時に指定したカメラを自動でオープンし、ROI やビニングを含む任意のビデオフォーマットとフレームレートを選択できるよう、二つのコンボボックス(「解像度/ビデオフォーマット」と「フレームレート」)を用意しています。

サンプルプログラム

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

サンプルツールの外観

解説

フォーム立ち上げ時の処理

private void Form1_Load(object sender, EventArgs e)
{
    // ───────── デバイスを指定 ─────────
    icImagingControl1.Device = "DFK 33GR0234";

    // ROI 取得したい解像度のリストを定義
    List<Resolution> wantedformatlist = new List<Resolution>();
    wantedformatlist.Add(new Resolution(640, 480));
    wantedformatlist.Add(new Resolution(1024, 786));
    wantedformatlist.Add(new Resolution(1440, 1024));
    wantedformatlist.Add(new Resolution(1980, 1080));
    wantedformatlist.Add(new Resolution(2048, 1536));
    wantedformatlist.Add(new Resolution(2448, 2048));
    wantedformatlist.Add(new Resolution(2592, 1944));
    wantedformatlist.Add(new Resolution(3072, 2048));
    wantedformatlist.Add(new Resolution(4000, 3000));
    wantedformatlist.Add(new Resolution(5320, 4600));

    List<string> formatlist = new List<string>();

    foreach (var desc in icImagingControl1.VideoFormatDescs)
    {
        // 希望解像度を順にチェック
        foreach (var wantedResolution in wantedformatlist)
        {
            // この解像度がキャプチャデバイスで使用可能か確認
            if (desc.IsValidSize(wantedResolution.Width, wantedResolution.Height))
            {
                // 一時的な VideoFormat を作成
                TIS.Imaging.VideoFormat tmpformat =
                    desc.CreateVideoFormat(wantedResolution.Width,
                                           wantedResolution.Height);

                // フォーマットを ComboBox に追加
                // formatlist.Add(tmpformat.ToString());
                comboBoxFormat.Items.Add(tmpformat);
            }
        }
    }

    // 利用可能なフレームレートを列挙
    foreach (var framerate in icImagingControl1.DeviceFrameRates)
    {
       comboBoxFramerate.Items.Add(framerate);
    }

    // 既定のフォーマットとフレームレートを設定してライブ開始
    icImagingControl1.VideoFormat = icImagingControl1.VideoFormats[0];
    icImagingControl1.DeviceFrameRate =
        (float)comboBoxFramerate.Items[0];

    icImagingControl1.LiveStart();
}

フォームが読み込まれると、まずicImagingControl1.Deviceにカメラ名(文字列)を代入して使用するデバイスを確定します。次にVideoFormatDescsに格納された各フォーマットを一つずつ取り出し、あらかじめ用意しておいた「利用したい解像度の一覧」と照合しながら、カメラが実際に扱えるサイズだけを選別します。VideoFormatは解像度だけでなく、RGB24やYUY2、Mono8などのピクセルフォーマットも同時に保持しています。ピクセルフォーマットは画素の並び方やビット深度を決める要素で、たとえば「24ビットRGBでカラーを受け取るか」「8ビットモノクロで処理するか」といった違いをここで指定できます。

幅と高さが有効かどうかはIsValidSizeで確認し、条件を満たした場合にCreateVideoFormatを呼び出して、解像度とピクセルフォーマットを併せ持つVideoFormatオブジェクトを生成し、解像度選択用コンボボックスへ追加します。このとき、ビニングやスキッピングされた解像度も候補に含めることが可能です。ピクセルフォーマットの詳細や各フォーマットの画素配置については、以下のドキュメントを参照してください。

イメージバッファにアクセスする
IC Imaging Control_Ver3.5(C#/VB.NET) サンプルプログラム

ピクセルフォーマット
産業用UVCカメラのすすめ

解像度リストには640×480から5320×4600まで幅広いサイズが用意されていますが、ここへ独自のROI(撮りたい範囲)を追加しておくことで、任意の切り出し解像度も選択できます。フレームレート用コンボボックスも同じタイミングで初期化され、DeviceFrameRatesプロパティから取得した値をそのまま追加します。最後にVideoFormats[0]とDeviceFrameRatesの先頭要素を既定値として選択し、LiveStart()を呼び出してライブ映像を開始します。


カラーフォーマット選択時の処理

 private void comboBoxFormat_SelectedIndexChanged(object sender, EventArgs e)
{
    icImagingControl1.LiveStop();

    // 選択されたフォーマットを適用
    icImagingControl1.VideoFormat =
      comboBoxFormat.Items[comboBoxFormat.SelectedIndex] as VideoFormat;

    // フレームレート一覧を更新
    comboBoxFramerate.Items.Clear();
    foreach (var framerate in icImagingControl1.DeviceFrameRates)
    {
        comboBoxFramerate.Items.Add(framerate);
    }
    if (comboBoxFramerate.Items.Count > 0)
        comboBoxFramerate.SelectedIndex = 0;

    icImagingControl1.LiveStart();
}

フォーマット選択が変わったときに実行されるこのイベントハンドラは、LiveStop()を呼び、ストリームを完全に停止してから コンボボックスで選択したVideoFormatに差し替えています。次に選択したVideoFormatで利用できるフレームレートをDeviceFrameRatesから取り直して、フレームレートのコンボボックスのリストを更新します。最後にLiveStart()を呼んでストリームを再開しています。


フレームレート選択時の処理

 private void comboBoxFramerate_SelectedIndexChanged(object sender, EventArgs e)
{
    icImagingControl1.LiveStop();
    icImagingControl1.DeviceFrameRate =
        (float)comboBoxFramerate.Items[comboBoxFramerate.SelectedIndex];
    icImagingControl1.LiveStart();
}

フレームレート変更時の処理もフォーマット変更とほぼ同じ流れです。LiveStop()で映像を止めたあと、DeviceFrameRateに選択された値を代入し、LiveStart()で再開します。

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

Copyright © ARGO Corporation. All Rights Reserved.