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.