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

動画保存 (AviStartCapture)

録画時間を指定したAVIファイル保存

ライブストリームをAVIファイルとして保存する方法を説明します。 ここではAVIコンプレッサとMediaStreamSinkを使って録画する方法となります。
コンテナを使ってH.264のコーデックにて動画保存する方法についてはこちらの動画保存のサンプルをご確認ください。

サンプルプログラム

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

実行結果

メイン画面

//起動したときに発火するイベント
private void Form1_Load(object sender, EventArgs e)
{
    //デバイスの読み込み
    if( !icImagingControl1.LoadShowSaveDeviceState("lastSelectedDeviceState.xml") )
    {
        MessageBox.Show("No device was selected.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
        this.Close();
        return;
    }
    cmdStartLive.Enabled = true;
    cmdStopLive.Enabled = false;
}

//”Start Live”ボタンをクリック時に発火するイベント
private void cmdStartLive_Click(object sender, EventArgs e)
{
    icImagingControl1.LiveDisplay = true;
    icImagingControl1.LiveStart();

    cmdStartLive.Enabled = false;
    cmdStopLive.Enabled = true;
}

//”Stop Live”ボタンをクリック時に発火するイベント
private void cmdStopLive_Click(object sender, EventArgs e)
{
    icImagingControl1.LiveStop();
    cmdStartLive.Enabled = true;
    cmdStopLive.Enabled = false;
}

//”Capture AVI”ボタンをクリック時に発火するイベント
private void cmdCaptureAVI_Click(object sender, EventArgs e)
{
    //WriteAviDlgのフォームを呼び出し
    WriteAvi WriteAviDlg = new WriteAvi(icImagingControl1);
    WriteAviDlg.ShowDialog();
    WriteAviDlg.Dispose();
}

メイン画面は非常にシンプルな作りでライブストリームの開始、停止、AVI録画ダイアログの表示を操作するためのボタンを設置しているのみです。

AVI書き込みダイアログ

private TIS.Imaging.ICImagingControl _imagingControl;
private TIS.Imaging.BaseSink _savedSink;
private bool _wasRunning = false;

//ダイアログが立ち上がったときに発火するイベント
private void WriteAvi_Load(object sender, EventArgs e)
{
    cboVideoCodec.DataSource = TIS.Imaging.AviCompressor.AviCompressors;

    // コンボボックスの中にAviCompressorsの中にある先頭のコーデックを入れる
    cboVideoCodec.SelectedIndex = 0;
    cmdStartCapture.Enabled = true;
    cmdStopCapture.Enabled = false;
}

Formをロードした時に発火するときに、設置してあるコンボボックスやボタンなどのコントローラーを初期化しています。 Video CodecのコンボボックスにAviCompressor(ビデオコーデック)のコレクションを追加し、コンボボックスから選択できるようにしています。

private void cmdStartCapture_Click(object sender, EventArgs e)
{
    if (txtFilename.Text == "")
    {
        MessageBox.Show("Please select an AVI filename first.");
        return;
    }
    _wasRunning = _imagingControl.LiveVideoRunning;

    if( _imagingControl.LiveVideoRunning )
        _imagingControl.LiveStop();
    //シンクの状態を保存
    _savedSink = _imagingControl.Sink;
    //AVI録画を行うに際してコーデックを選択し、MediaStreamSinkを作成
    _imagingControl.Sink = new TIS.Imaging.MediaStreamSink( (TIS.Imaging.AviCompressor)cboVideoCodec.SelectedItem, txtFilename.Text );
    try
    {

        _imagingControl.LiveDisplay = false;
        //ライブストリームを開始(録画を開始)
        _imagingControl.LiveStart();
        cmdStopCapture.Enabled = true;
        cmdStartCapture.Enabled = false;

    }
    catch
    {
        //前のシンクにつなぎ直す
        _imagingControl.Sink = _savedSink;
        if( _wasRunning )
        {
            _imagingControl.LiveDisplay = false;
            _imagingControl.LiveStart();

        }
    }
}

AVI録画を行うコーデックをためにMediaStreamSinkを作成します。その後、シンクの"running"状態の設定します。
Trueにすることで、動画保存やフレーム画像の取得を遅延なく開始することができます。MediaStreamSinkシンクを設定し、ライブストリームを開始するだけで録画をすることができます。

private void cmdStopCapture_Click(object sender, EventArgs e)
{
    _imagingControl.LiveStop();
    _imagingControl.Sink = _savedSink;
    cmdStopCapture.Enabled = false;
    cmdStartCapture.Enabled = true;

    if( _wasRunning )
        _imagingControl.LiveStart();
}

ライブストリームを停止することで録画停止することができます。
シンクをMediaStreamSinkから元のシンク(FrameHandlerSink)に戻すことで録画せずにストリーミング再生することが可能です。

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

Copyright © ARGO Corporation. All Rights Reserved.