イメージデータの取得
概要
ICImagingControlを使用して1フレームのデータを取得する方法を示しています。
サンプルプログラム
Software | IC Imaging Control 3.5, Visual Studio™ 2019 |
---|---|
サンプル(C#) | acquiring_an_image_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 button1_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));
pictureBox1.Image = TIS.Imaging.FrameExtensions.CreateBitmapWrap(frm); ;
}
ユーザーが[Capture]ボタンをクリックすると、アプリケーションがスナップショットを必要とする場合に使用するFrameSnapSinkを使って画像データにアクセスします。SnapSingleではカメラデバイスなどから新しい画像が取得されるのを待ち、取得されたらIFrameQueueBufferインターフェースに取得された画像が入ります。取得した画像をプロパティ.CreateBitmapWrapでpictureBox1.Imageにイメージデータを引き渡します。これによりピクチャボックス上に取得されたイメージが表示されます。
なお、IC Imaging Control3.5から.MemorySnapImageや.ImageActiveBufferが非推奨となっておりますのでご注意ください。