qcam_api.html
last modified
2002-04-05
IMPORTANT NOTICE (2002-04-05): Due to ongoing changes in the Logitech SDK and a lack of any response by Logitech to our repeated requests for technical data and support, this API has become substantially unstable and unmaintainable although it apparently still works in many cases. We have taken the liberty of posting Logitech's 5.43 version of their driver at ftp://ftp.robix.com/perception/software/ since the currently available 6.01 version has resulted in many problem reports to us. Using an older camera such as a QC Express with the older driver is the best suggestion we have to attempt a workaround.
As an alternative, we have been investigating creating our own cameras systems from commercial parts for which documentation and support is available. While this project would not present a particular technical challenge, it would require substantial effort, expense and time to produce what would be a niche product. On the positive side, we would be able to optimize product features and physical geometry for multi-camera pattern recognition systems rather than, as with current offerings, single camera streaming video.We're not yet decided about what to do.
In any case, and with apologies, we will no longer be offering any email responses to questions concerning the current API.
PC-connected cameras are most often used for human-in-the-loop, streaming-video purposes such as producing video email, video chats, video conferencing, and so on. The software packaged with these cameras is understandably designed for these purposes.
Vision research makes up an extremely small part of the market for these low-cost cameras and so is not directly supported by manufacturers. Since we at Robix view these inexpensive, light-weight cameras as close to ideal for attachment to, and use with, our robots, we created an easy-to-use in-house API that provides detailed parametric control of these cameras (and a convenient parameters display window), along with image-on-demand capability. And then, both for marketing purposes and because it seemed a like a pleasant thing to do, we documented the API fully so that it might be used as a stand-alone tool for the vision community.
The underlying Logitech SDK is based on a Windows COM object, which is a Microsoft-specific construct. Thus, not all programs can work with COM objects; and even programs that can do so may not "want" to if there are plans to migrate to or support a non-Windows operating system:
Yes. By providing a Microsoft COM object, the SDK integrates readily with either Microsoft's Visual C++ or Borland C++ Builder, and it may be all you need if you're intending to stay within theWindows OS. Even so, you can still reduce your learning and implementation times by using our API's "camera properties display window", the code for which is structured as a "drop in" with SDK-based projects. This window shows each of the two dozen camera properties and their values of either 0..255, or a named value such as ADJUSTMENT_MANUAL, or ANTIFLICKER_OFF. Just install the API and run the demo to see the properties window.
If you want a copy of our properties window in your own SDK-based code, copy the three source files cameraprops.cpp, cameraprops.h and cameraprops.dfm to your Borland C++ Builder project and edit the #define at the top of the CB_Demo1\CameraProps.cpp file according to the note you'll find there, and you're ready to compile. If you are using Microsoft's Visual C++, it's slightly more complicated. See the VC_Demo1\CameraProps.cpp.
Click to download and install the Robix API (ver 0.0.6) for Logitech Quick Cams version which is a 2.4 MB self-extracting Windows executable that you can run right from the web to install. If you are upgrading to this current version, please uninstall old version first. The API comes with with complete documentation, ready-to-compile example code in C++ and (in beta) Java code, and prebuilt executables of the examples for your convenience in immediate demonstration. All you need is a USB QuickCam attached to your PC, with current Logitech camera software installed. You'll need version 5.4.3 or later for the most QuickCam models.
That's how we describe our development here at Robix. Java's relatively slow execution keeps it from being our first choice for image processing and analysis or motion control, both of which are crucial to our projects. (*but also see Machine Vision Algorithms in Java : Techniques and Implementation by Paul F. Whelan, Derek Molloy; hardcover - December 2000; and NeatVision, the associated shareware). So, like just most everyone else, we use C/C++ for all of our time-senstive, "core algorithms". However, in just about every other area we find that Java has significant advantages over C/C++. So we use both languages, and here's what we get:
Well, not yet, since Logitech only publishes the SDK for Windows. However, it should be possible to use Java to make an end-run around the whole issue within a few months. Once the javax.usb implementation is released, support for other platforms for QuickCams and also for other USB-based camera brands is likely to follow, typically from camera suppliers themselves, though from other sources if the suppliers take too long. So we anticipate a remarkably easy migration to many other OS + hardware + USB combinations, with basically only a recompilation of the C/C++ "core algorithm" code.
The API is provided free, without warranty or support. However, since we use, and continue to improve, this exact same API in development at Robix, we are very interested in hearing about and fixing bugs by email. If you report an apparent bug and describe it sufficiently, we will generally be very interested in reproducing it, fixing it, and posting the fix.
We can send you occasional, brief messages alerting you to pertinent developments and updates as they are posted to the website. Send an email with "subscribe" in the subject, and include a message if you want to, to perception_newsletter@robix.com, and we will keep you posted. You can unsubscribe any time. (We have been supplying robots for education and research since 1993 and have never made any of our contacts' email addresses available. We expect never to do so.)
Trademarks:
"Windows" is a registered
trademark of Microsoft Corporation.
"Logitech" and "QuickCam" are registered
trademarks of Logitech .
"Java" is a registered trademark of Sun
Microsystems.
"Robix" is a trademark of Advanced Design Inc., dba
Robix
[an error occurred while processing this directive]