静止画ファイルの連番保存
概要
イメージデータストリームからイメージフレームを連続して静止画ファイルとして保存していく方法を示しています。
サンプルプログラム
Software | IC Imaging Control 3.5, Visual Studio™ 2019 |
---|---|
サンプル(C#) | save_Image_Sequence_cs_3.5.zip |
サンプルツールの外観
private void Form1_Load(object sender, System.EventArgs e)
{
icImagingControl1.ShowDeviceSettingsDialog();
if( icImagingControl1.DeviceValid )
{
icImagingControl1.Sink = new TIS.Imaging.FrameSnapSink();
icImagingControl1.LiveStart();
}
else
{
Close();
}
}
ここでは連続した静止画をストレージに書き出す方法を示します。
デバイス選択のダイアログ(.ShowDeviceSettingsDialog)をコールして使用するビデオキャプチャデバイスを選択します。正しいデバイスが選択されれば、.LiveStartによりライブ表示を開始します。
その際にビデオストリームからオンデマンドでフレームを取得するために使用できるSinkタイプFrameSnapSinkクラスを定義します。
private void btnSaveNextImage_Click(object sender, System.EventArgs e)
{
TIS.Imaging.FrameSnapSink snapSink = icImagingControl1.Sink as TIS.Imaging.FrameSnapSink;
TIS.Imaging.IFrameQueueBuffer frm = snapSink.SnapSingle(TimeSpan.FromSeconds(5));
string fileName = "Image " + imageNumber + ".bmp";
TIS.Imaging.FrameExtensions.SaveAsBitmap(frm, fileName);
imageNumber += 1;
}
ユーザーが[Save Next Image]ボタンをクリックすると、アプリケーションがFrameSnapSinkを使って画像データにアクセスします。SnapSingleではカメラデバイスなどから新しい画像が取得されるのを待ち、取得されたら IFrameQueueBufferインターフェースに取得された画像が入ります。その後、.SaveAsBitmapによりデータはBMPファイルに書き出されます。ファイル番号を増やし、次のボタンクリックを待ちます。