When your engineers proudly presented your finished product boasting five XYZ cameras, you were very satisfied. Your satisfaction was maintained for several months until your purchasing department informed you that XYZ cameras cannot be delivered anymore. Your electrical engineers then told you that it is no problem since ABC cameras could easily be used instead; but six are needed instead of five because they have a narrower view. So far, so good, you thought.
Then you started talking to your software engineers. You were not prepared at all for what your lead software engineer told you: "Well, for using ABC instead of XYZ cameras, we need to change the whole software. All our software modules only know XYZ cameras. It will take at least two months. And changing the number of cameras to six will take another two weeks."
Our flexible image acquisition software library will help you to avoid this kind of situation in the future. A close relative of the Device Abstraction Layer software, this software library allows generic access to video images, without having to handle the low-level details of accessing multiple different video capturing devices that all have their own way of operation. By hiding the details of accessing different vendors’ capturing hardware behind a generic interface, working with images becomes much more comfortable and has the additional advantage that changing the underlying capturing hardware does not require changing any client code.
The library offers flexible and powerful means of accessing single images or sequences of images, all in a thread-aware and asynchronous-safe manner.
Powerful preprocessing filters, such as cropping and undistortion, can be applied transparently to the captured images before handing them out to clients. For simulated operations, image sequences can be fed from files into the library and treated as live streams.