LifeCam 3000 HD - Unable to manually set exposure for dark images

Many people appear to be having difficulty getting the Microsoft LifeCam 3000 HD to get nice dark images, suitable for retroreflective image processing.

Using .setExposureManual(0) and .setExposureManual(1) doesn’t work as 0 is too dark, and 1 is too bright.

In the USBCamera class, there is an updateSettings() method.

Around line 154 there is code to try and scale values from 0-100 to whatever the camera’s native exposure settings are. This doesn’t seem to be working properly for the LifeCam 3000 HD.

I replaced the line:
NIVision.IMAQdxSetAttributeI64(m_id, ATTR_EX_VALUE, val);

with:
NIVision.IMAQdxSetAttributeI64(m_id, ATTR_EX_VALUE, m_exposureValue);

This will pass the raw number from 0-100 you specify to the camera, without trying to scale it.

Be careful, the camera only accepts a certain set of valid value for these exposure settings. A value of 5 seemed to work okay for us, but we need to test this more.

Absolutely correct!

Without pointing fingers, let’s just say, Microsoft LifeCams will ONLY accept certain values, everything else will end up with over exposure.

As an example, I used V4L2 commands to set exposure. Only the following work:
5, 9, 10, 19, 20, 39, 78, 156, 312, 625, 1250, 2500, 5000 and 10000. Nothing beyond 156 works for 30FPS.

The saddest part of this is that if you query the camera for values it will accept, it reply’s with “5-20,000”.