静止画ファイル保存(BMP)
概要
イメージデータストリームから1枚のフレームを取得してBMPファイルに保存する方法を示しています。
サンプルプログラム
Software | IC Imaging Control 3.5, Visual Studio™ 2019 |
---|---|
サンプル(C#) | save_bmp_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();
}
}
まず、ICImagingControlをフォームにドラッグして貼り付け、保存の為のボタンを配置します。
デバイス選択のダイアログ(.ShowDeviceSettingsDialog)をコールして使用するビデオキャプチャデバイスを選択します。
正しいデバイスが選択されれば、.LiveStartによりライブ表示を開始します。
その際にビデオストリームからオンデマンドでフレームを取得するために使用できるSinkタイプFrameSnapSinkクラスを定義します。
private void btnSaveBMP_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));
SaveFileDialog dlg = new SaveFileDialog();
dlg.AddExtension = true;
dlg.DefaultExt = "bmp";
dlg.Filter = "BMP Images (*.bmp)|*.bmp||";
dlg.OverwritePrompt = true;
if( dlg.ShowDialog() == DialogResult.OK )
{
TIS.Imaging.FrameExtensions.SaveAsBitmap(frm,dlg.FileName);
}
}
ユーザーが[Save BMP]ボタンをクリックすると、アプリケーションがスナップショットを必要とする場合に使用するFrameSnapSinkを使って画像データにアクセスします。SnapSingleではカメラデバイスなどから新しい画像が取得されるのを待ち、取得されたらIFrameQueueBufferインターフェースに取得された画像が入ります。次にdlg.ShowDialog()で保存先選択のダイアログを表示し、イメージの保存先を取得します。最後に.SaveAsBitmapによりイメージバッファをファイルに書き出します。
なお、IC Imaging Control3.5から.MemorySnapImageや.MemorySaveImageが非推奨となっておりますのでご注意ください。