EasyImages Toolkit: Camera Capture & Image Processing


EasyImage is a lightweight toolkit that makes it really easy to:

  • capture frames as bitmaps as they are produced by a web camera
  • invoke some basic image processing of these frames, e.g., blurring, edge detection, differencing, etc.
  • transform a frame into a jpeg image at a particular quality level
  • access pixels within a frame if you wanted to do your own image manipulation.

No specialized knowledge of cameras or image processing is required to use its basic features.

Notes

  • EasyImage replaces similar functionality developed in the Collabrary toolkit; we did this to get away from the headaches of COM.
  • This API should be fairly stable, but we do plan to redo a few internal things when there is time. We will also extend the API as needed to provide additional functionality.

Contents



Download and Installation

  • Get EasyImages
    • EasyImagesDll1017.zip EasyImages DLL (version 1.0.1.7). All that is required for development. Includes the CameraServer exe, which is automatically installed alongside the executable when your program is built and run. (AVICap32 version)
    • CameraServerInstaller.msi Camera Server Installer. Installs the camera server as a stand-alone application available from the Start menu. (AVICap32 version)
    • EasyImagesProject1017.zip Complete Project (version 1.0.1.7). Contains all source code, libraries, and executables.
    • (AVICap32 version)DirectXEasyImagesProject1017Beta2.zip Beta Version of the Project (version 1.0.1.7) that uses DirectShow instead of AVICAP32 as the base of the project. Note that you will need to attach the included DirectShow Net dll in any project using it.
  • Download / unzip the source, programs and libraries into a single folder.
  • Include the library ImageCamera.dll (found in the bin/release folder) in projects
  • Try the Tutorials below.

Tutorials

EasyImages Tutorial Examples - Source and Executables: EasyImagesExamples.zip

  • Unzip all files into a single folder.
  • Try the executables (the debug directories are your best bet; shortcuts don't always work properly)
  • For best results, attach a web camera to your computer, although you can also use the test pattern option in the Camera Server if you don't have one.

To best understand these tutorials, we strongly recommend that:

  • You read the Understanding the Camera Client Server How-To before you run one of the sample programs. These examples use a server, and you need to know how to start that server (don't worry - its very easy to do).
  • You look at the How to: A Primer on Using Delegates to Display Images. The examples use delegates to assign images to picture boxes in a thread-safe way; if you haven't done this before, this will help you understand why we use this .NET-recommended approach.
  1. CameraMinimal. A minimalist program that gets and shows video frames from a camera attached to your computer.
  2. Camera Client/Camera Server Interaction. A more fully featured version of the above that lets you interactively start/stop the camera, set its frame rate, and set the camera image size.
  3. ImageManipulator. Shows how to manipulate an image (in this case a running video) to apply distortions (blurring, edge detection, etc.) and dithers (various levels of greys and colore).
  4. ImageDifferencing. Shows how to generate an image that is the result of subtracting two images, and analysing the two to see how different they are.
  5. ImageToJPG. Shows how to easily convert an image to a jpg, using a quality setting.
  6. ImageAlphaBlending. Shows how to alpha blend two images together using an alpha blending value.
  7. VideoAlphaBlending. Shows how to alpha blend a video stream together over time, which shows a brief glimpse into past activities.
  8. VideoManipulatingBits. Shows how to manipulate bits in an image, in this case by 'washing out' the image. Please read Understanding Bitmaps, as this explains how all this works. Note that this is more about processing bitmaps than about EasyImages...
  9. VideoSlitScanning. Shows how to create a slit-scannedimage, where a column from a source frame is appended to the end of a destination bitmap. This illustrates further ways to manipulate bits. Please read Understanding Bitmaps and examine the VideoSlitScanning code before trying to understand this more advanced bitmap manipulation example. Note that this is more about processing bitmaps than about EasyImages...
  10. VideoResize is included in the examples to illustrate how to use the EasyImages.ImageGenerator.Resize method. No tutorial is included, as this API may be changed...

Examples

Recipes and How-To's