66 lines
2.5 KiB
Python
66 lines
2.5 KiB
Python
# Copyright 2013 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import its.device
|
|
import its.target
|
|
import sys
|
|
|
|
def main():
|
|
"""Set the target exposure.
|
|
|
|
This program is just a wrapper around the its.target module, to allow the
|
|
functions in it to be invoked from the command line.
|
|
|
|
Usage:
|
|
python config.py - Measure the target exposure, and cache it.
|
|
python config.py EXP - Hard-code (and cache) the target exposure.
|
|
|
|
The "reboot" or "reboot=<N>" and "camera=<N>" arguments may also be
|
|
provided, just as with all the test scripts. The "target" argument is
|
|
may also be provided but it has no effect on this script since the cached
|
|
exposure value is cleared regardless.
|
|
|
|
If no exposure value is provided, the camera will be used to measure
|
|
the scene and set a level that will result in the luma (with linear
|
|
tonemap) being at the 0.5 level. This requires camera 3A and capture
|
|
to be functioning.
|
|
|
|
For bring-up purposes, the exposure value may be manually set to a hard-
|
|
coded value, without the camera having to be able to perform 3A (or even
|
|
capture a shot reliably).
|
|
"""
|
|
|
|
# Command line args, ignoring any args that will be passed down to the
|
|
# ItsSession constructor.
|
|
args = [s for s in sys.argv if s[:6] not in \
|
|
["reboot", "camera", "target", "device"]]
|
|
|
|
if len(args) == 1:
|
|
with its.device.ItsSession() as cam:
|
|
# Automatically measure target exposure.
|
|
its.target.clear_cached_target_exposure()
|
|
exposure = its.target.get_target_exposure(cam)
|
|
elif len(args) == 2:
|
|
# Hard-code the target exposure.
|
|
exposure = int(args[1])
|
|
its.target.set_hardcoded_exposure(exposure)
|
|
else:
|
|
print "Usage: python %s [EXPOSURE]"
|
|
sys.exit(0)
|
|
print "New target exposure set to", exposure
|
|
print "This corresponds to %dms at ISO 100" % int(exposure/100/1000000.0)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|