IC Imaging Control .NET

Grabbing an Image

Grabbing an Image

This chapter shows you how to grab a still image from the video stream and save it to a .BMP file.

The source code for this sample program can be found under samples\C# *\Grabbing an Image in your My Documents/IC Imaging Control 3.5 directory.

Setting up the Project

Create a new project and add IC Imaging Control to the form. Before you run the program, select the video device, input and video format as shown in the FirstSteps chapter. Alternatively, run the program without selecting a device. In this case, the program shows the device selection dialog provided by IC Imaging Control. If you close this dialog without having made a selection, the program will display an error message and terminate.

Now, add 3 buttons to the form and label them "Start Live", "Stop Live" and "Save Bitmap". Name the buttons cmdStartLive, cmdStopLive and cmdSaveBitmap respectively.

Add calls to IC Imaging Control's LiveStart and LiveStop methods:

private void cmdStartLive_Click(object sender, EventArgs e) { icImagingControl1.Sink = new TIS.Imaging.FrameSnapSink(); icImagingControl1.LiveStart(); cmdStartLive.Enabled = false; cmdStopLive.Enabled = true; cmdSaveBitmap.Enabled = true; }
private void cmdStopLive_Click(object sender, EventArgs e) { icImagingControl1.LiveStop(); cmdStartLive.Enabled = true; cmdStopLive.Enabled = false; cmdSaveBitmap.Enabled = false; }

Note that we added icImagingControl1.Sink = new TIS.Imaging.FrameSnapSink(); in cmdStartLive_Click. This creates a FrameSnapSink and add it as the frame capture sink of the control.

Now we can add the handler for clicking on cmdSaveBitmap:

private void cmdSaveBitmap_Click( object sender, EventArgs e ) { TIS.Imaging.FrameSnapSink snapSink = icImagingControl1.Sink as TIS.Imaging.FrameSnapSink; TIS.Imaging.IFrameQueueBuffer frm = snapSink.SnapSingle(TimeSpan.FromSeconds(5)); SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "bmp files (*.bmp)|*.bmp|All files (*.*)|*.*"; saveFileDialog1.FilterIndex = 1; saveFileDialog1.RestoreDirectory = true; if( saveFileDialog1.ShowDialog() == DialogResult.OK ) { frm.SaveAsBitmap(saveFileDialog1.FileName); } }

The handler does 3 things.

The line TIS.Imaging.FrameSnapSink snapSink = icImagingControl1.Sink as TIS.Imaging.FrameSnapSink; fetches the FrameSnapSink which we registered in cmdStartLive_Click.

The line TIS.Imaging.IFrameQueueBuffer frm = snapSink.SnapSingle(TimeSpan.FromSeconds(5)); fetches the next frame arriving in the sink while at most waiting for 5 seconds.

The remaining lines show a SaveFileDialog and saving the image as a bitmap via FrameExtensions.SaveAsBitmap.

<< Programmer's Guide

Get in touch with us

About The Imaging Source

Established in 1990, The Imaging Source is one of the leading manufacturers of industrial cameras, frame grabbers and video converters for production automation, quality assurance, logistics, medicine, science and security.

Our comprehensive range of cameras with USB 3.1, USB 3.0, USB 2.0, GigE interfaces and other innovative machine vision products are renowned for their high quality and ability to meet the performance requirements of demanding applications.

Automated Imaging Association ISO 9001:2015 certified

Contact us