Industrial Camera - Home

Programming Interface

In the following, we take a broad view of the term "programming interface". We use this term only to describe some typical options for programmers to access industrial cameras.

We assume that the industrial USB camera, FireWire camera or GigE camera is connected to a computer that is used to develop application software. This application software writes parameters (like exposure time) into the industrial camera and fetches its images. This process is called "image acquisition" or "image capture".


IIDC stands for "Instrumentation & Industrial Digital Camera". This is a working group in the context of the standardization of the FireWire interface (IEEE 1394). This working group is responsible of a protocol for industrial FireWire cameras called DCAM. IIDC/DCAM describes in an easy and straightforward way:

  • how the FireWire camera communicates, which parameters it provides (e.g. whether the exposure time can be set manually and, if yes, in which range),
  • how the available parameters can be set and
  • how the data is transfered.

IIDC/DCAM is ideal for all those, who prefer hardware-oriented programming and operating systems that permit this way of programming. Thus, FireWire cameras are especially interesting, if Windows is not or cannot be used. It should, however, be noted that Windows offers a number of efficient ways to use FireWire cameras.

IIDC/DCAM is an open standard and free of royalties. This is one reason why there is plenty of open source software that supports FireWire cameras.

GigE Vision®

While IIDC/DCAM is the protocol of FireWire cameras, GigE Vision® is the counterpart for industrial GigE cameras. GigE Vision® is a closed standard and a registered trademark of the Automated Imaging Association (AIA). Thus, there is no open source software for GigE cameras.


While IIDC/DCAM and GigE Vision® only support one type of industrial camera, the aim of GenICam™ is to provide an "umbrella protocol" for all types of industrial cameras. GenICam™ is a trademark of the European Machine Vision Association (EMVA). Members of the GigE Vision® group can apply for a free reference implementation.


All three above mentioned programming interfaces are more or less hardware-oriented. In contrast to this, an up-to-date development of application software should be based on the programming interface of the operating system (API - Application Programming Interface). This is the only way to develop hardware-independent software. Software that is not hardware-independent can easily be affected by the smallest modification of the underlying hardware.

Under Windows, the programming interface for industrial cameras is DirectX/DirectShow. To be compatible to DirectX/DirectShow, a manufacturer has to provide a so-called WDM Stream Class driver for his industrial camera.

One of the pioneers of using DirectX/DirectShow in machine vision applications is The Imaging Source. To simplify the work with DirectX/DirectShow, The Imaging Source provides the well-known SDK IC Imaging Control.

DirectX/DirectShow is an open interface and free of royalties.


With DirectX/DirectShow, Windows provides a programming interface (API) for multimedia devices in general and industrial cameras in particular. Linux does not offer such a programming interface. The aim of the project Unicap is to overcome this problem.

Unicap is a private project and is published under the GNU General Public License (GPL). Thus, software that is based on Unicap also has to be distributed under GPL. Therefore, Unicap is not often used in commercial projects.