A WebCam Class in Visual Basic

The WebCam class will make it easy for your applications to view a webcamera. Additionally, it will make it possible to configure a number of settings on the Webcam, such as setting the FPS value (frames per second).

This class was written quickly to dig into the .NET environment. As such, the coding may not be the best, but it works. Included with the code is a project that uses the class, so that you can see how simple it is.

If you look at the class, you will find that the first three variables that can be changed are as follows:

   Private CamFrameRate As Integer =  15
   Private OutputHeight As Integer = 240
   Private OutputWidth As Integer  = 360

CamFrameRate is set to 15 in this code. This is just the initial frame rate that is used. The CamFrameRate sets how much of a gap there is between frames. In this case, 15ms, or about 65 FPS, is the setting. You can change the FPS through a subroutine.

OutputHeight and OutputWidth are fairly self explanatory. You can set these to the dimensions of output.

Before doing much with a WebCam, you should probably make sure it is running. You can use the iRunning variable to check. This variable is defined in the code as follows:

Public iRunning As Boolean

You can call IRunningat any time; it will return true if the camera is running or false if it is not. For example, the following line of code displays a message box letting you know if the camera is running:

Messagebox.show Mycam.Irunning

How to Use the Class

To use the class, you first need to create an iCam object:

Private myCam As iCam
Set myCam = New iCam

From here, you can call a range of functions using standard syntax:

mycam.Function Name


The following provides a bit of information on the key functions:

  • initCam(ByVal parentH As Integer): This is where it all starts. You must call this to set up the camera. parentH is where you want to prievew, so if you have a pictureBox on your form, named picoutput, you would call initCam as follows:
  • myCam.initCam(Me.picOutput.Handle.ToInt32)
  • resetCam(): If you need to reset the camera, you can call this function. In general, you shouldn't need this.
  • setFrameRate(ByVal iRate As Long): With setFrameRate, you are able to set the frame rate by passing a FPS value. This value then will be converted into how much time there should be between frames. The following sets the frame rate using a value of 25:
  • myCam.setFrameRate(25)
  • closeCam(): You should always close out the webcam class when you are done. This helps to clear things up.
  • copyFrame(ByVal src As PictureBox, ByVal rect As RectangleF): The copyFrame subroutine returns an image of the current frame. You need to pass to it the source picture box (where the camera image is) and then a rectangle specifying size dimensions:
  • Me.picStill.Image = myCam.copyFrame(Me.picOutput, _
                                        New RectangleF(0, 0, _
                                        Me.picOutput.Width, _
  • FPS(): This FPS subroutine returns the current FPS value.

In Conclusion...

The code might not be the greatest; however, it works well. Hopefully, you will find it useful.

About the Author

Liam Bateman

I'm a Web/Applications Developer based in Manchester UK. Using C# / Vb (.Net And 6). Moderator At (www.Vbforums.com)



  • "Not Declared" errors

    Posted by Skylar on 10/09/2012 03:20pm

    When I try to debug my app, I get these errors: 'Application' is not declared. It may be inaccessible due to its protection level. 'MessageBox' is not declared. It may be inaccessible due to its protection level. 'MessageBox' is not declared. It may be inaccessible due to its protection level. 'MessageBox' is not declared. It may be inaccessible due to its protection level. Type 'PictureBox' is not defined. Type 'RectangleF' is not defined. Type 'Bitmap' is not defined. Type 'Graphics' is not defined. Type 'Bitmap' is not defined. Type 'Graphics' is not defined. Type 'Bitmap' is not defined. 'MessageBox' is not declared. It may be inaccessible due to its protection level. Importing the namespaces do nothing, and are already referenced in my application anyways.

  • Wifi

    Posted by zspzs on 03/19/2010 09:11pm

    Hello, Thanks for the nice article. It works fine when I use an USB webcam. Where can I change the webcam source in the code if I want to use another camera? e.g. wifi camera. Thank you in advance for your help! Peter

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • As businesses have grown in size and global reach, emerging technologies such as cloud computing and virtualization have appeared to help companies effectively connect and grow. However, the networking strategies and infrastructures that keep organizations connected have often remained in the past. Now, new strategies that leverage global connectivity and locations exist to provide a more flexible and cost-effective alternative to traditional networking systems. This Aberdeen report analyzes how top performing …

  • On-demand Event Event Date: March 27, 2014 Teams need to deliver quality software faster and need integrated agile planning, task tracking, source control, auto deploy with continuous builds and a configurable process to adapt to the way you work. Rational Team Concert and DevOps Services (JazzHub) have everything you need to build great software, integrated seamlessly together right out of the box or available immediately in the cloud. And with the Rational Team Concert Client, you can connect your …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds