静止画をキャプチャし保存する

ビデオストリームより静止画をキャプチャしBMPファイルとして保存する方法を説明します。
今回のサンプルプログラムのVB.NET 、C#用のソースコードはMy Documents/IC Imaging Control 3.4内の以下ののディレクトリに格納されています。
samples\VB *\Grabbing an Image
samples\C# *\Grabbing an Image

プロジェクトの新規作成

新しいプロジェクトを作成し、IC imaging Controlをフォームに追加してください。プログラムを実行する前に、はじめに: Visual Studio .NETプログラマーズガイド>Visual Studioでスタートにあるように映像デバイスの選択、入力方式、ビデオフォーマットを選択してください。もしくはデバイスを選択せずにプログラムを実行してください。その際はIC Imaging Controlによってデバイス選択のダイアログが出現します。選択をせずにダイアログを閉じた場合、プログラムはエラーメッセージを表示し、終了します。
フォームに3つのボタンを追加し、 Captionプロパティをそれぞれ"Start Live"、 "Stop Live" 、"Save Bitmap"とします。 それぞれcmdStartLivecmdStopLivecmdSaveBitmapと 名前を付けます。
まずはIC Imaging ControlのLiveStartLiveStopメソッドへのコールを追加します。

[VB.NET]
Private Sub cmdStartLive_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStartLive.Click
     IcImagingControl1.LiveStart()
End Sub
[C#]
private void cmdStartLive_Click(object sender, EventArgs e)
{
     icImagingControl1.LiveStart();
}
[VB.NET]
Private Sub cmdStopLive_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
                                   Handles cmdStopLive.Click
  IcImagingControl1.LiveStop()
End Sub
[C#]
private void cmdStopLive_Click(object sender, EventArgs e)
{
     if (icImagingControl1.LiveVideoRunning == true)
     icImagingControl1.LiveStop();
}

プログラムを実行してください。これでそれぞれのボタンをクリックすることでライブ画像のスタート、ストップなどの操作ができるようになります。

ビデオフォーマットはビデオストリームの幅、高さ、色深度を表すものです。用途に応じて選択してください。

ライブ画像の表示中、MemorySnapImageクラスライブラリリファレンス>クラス>ICImagingControl>ICImagingControl.MemorySnapImage Method メソッドを呼び出すことで現在表示されている画像をキャプチャし、IC Imaging Controlの画像バッファに取り込むことが可能です。ライブ画像を停止した際には、最後のフレームが画像バッファへ自動的に取り込まれます。どちらのケースでもキャプチャされた画像はMemorySaveImageクラスライブラリリファレンス>クラス>ICImagingControl>ICImagingControl.MemorySaveImage Methodメソッドによって保存することが可能です。ファイル名の選択を可能にするために、共通ダイアログは追加する必要があります。

[VB.NET]
Private Sub cmdSaveBitmap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
 Handles cmdSaveBitmap.Click     IcImagingControl1.MemorySnapImage()
     ' 保存ファイルダイアログを呼び出し、画像ファイルに名前を付ける
    Dim saveFileDialog1 As New SaveFileDialog
    saveFileDialog1.Filter = "bmp files (*.bmp)|*.bmp|All files (*.*)|*.*"
    saveFileDialog1.FilterIndex = 1
    saveFileDialog1.RestoreDirectory = True

     If saveFileDialog1.ShowDialog() = DialogResult.OK Then
        ' 画像を保存する
        IcImagingControl1.MemorySaveImage(saveFileDialog1.FileName)
     End If
End Sub
[C#]
private void cmdSaveBitmap_Click(object sender, EventArgs e) {     SaveFileDialog saveFileDialog1;
    icImagingControl1.MemorySnapImage();
    saveFileDialog1 = new SaveFileDialog();     saveFileDialog1.Filter = "bmp files (*.bmp)|*.bmp|All files (*.*)|*.*";
    saveFileDialog1.FilterIndex = 1;
    saveFileDialog1.RestoreDirectory = true;

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
     {
         icImagingControl1.MemorySaveImage(saveFileDialog1.FileName);
     }
}

これでライブ画像のスタートや停止、ブライトネスやフォーカスの調整そして静止画をキャプチャして保存することが可能になりました。