diff options
author | Timothy Knight <tknight@google.com> | 2014-07-12 00:46:11 -0700 |
---|---|---|
committer | Timothy Knight <tknight@google.com> | 2014-07-12 00:55:49 -0700 |
commit | 312c1c3e4faad4e77070059d3b88acd3754daa48 (patch) | |
tree | 343d5f1248e30e227c6f1b64307fc473dc373192 /apps/CameraITS/tests/scene1/test_param_sensitivity.py | |
parent | 5e8601829f70fc5aa6e66b9f5a597915ce50e366 (diff) | |
download | pdk-312c1c3e4faad4e77070059d3b88acd3754daa48.tar.gz |
CameraITS: Restructured test folders to group by scenes.
Change-Id: I3dc66bd44569f4416826d7f23b4e63533058bd3f
Diffstat (limited to 'apps/CameraITS/tests/scene1/test_param_sensitivity.py')
-rw-r--r-- | apps/CameraITS/tests/scene1/test_param_sensitivity.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/apps/CameraITS/tests/scene1/test_param_sensitivity.py b/apps/CameraITS/tests/scene1/test_param_sensitivity.py new file mode 100644 index 0000000..43aec76 --- /dev/null +++ b/apps/CameraITS/tests/scene1/test_param_sensitivity.py @@ -0,0 +1,72 @@ +# 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.image +import its.device +import its.objects +import its.target +import pylab +import os.path +import matplotlib +import matplotlib.pyplot + +def main(): + """Test that the android.sensor.sensitivity parameter is applied. + """ + NAME = os.path.basename(__file__).split(".")[0] + + # Pass/fail threshold. + THRESHOLD_MIN_DIFF = 0.02 + + NUM_STEPS = 5 + + sensitivities = None + r_means = [] + g_means = [] + b_means = [] + + with its.device.ItsSession() as cam: + expt,_ = its.target.get_target_exposure_combos(cam)["midSensitivity"] + props = cam.get_camera_properties() + sens_range = props['android.sensor.info.sensitivityRange'] + sens_step = (sens_range[1] - sens_range[0]) / float(NUM_STEPS-1) + sensitivities = [sens_range[0] + i * sens_step for i in range(NUM_STEPS)] + + for s in sensitivities: + req = its.objects.manual_capture_request(s, expt) + cap = cam.do_capture(req) + img = its.image.convert_capture_to_rgb_image(cap) + its.image.write_image( + img, "%s_iso=%04d.jpg" % (NAME, s)) + tile = its.image.get_image_patch(img, 0.45, 0.45, 0.1, 0.1) + rgb_means = its.image.compute_image_means(tile) + r_means.append(rgb_means[0]) + g_means.append(rgb_means[1]) + b_means.append(rgb_means[2]) + + # Draw a plot. + pylab.plot(sensitivities, r_means, 'r') + pylab.plot(sensitivities, g_means, 'g') + pylab.plot(sensitivities, b_means, 'b') + pylab.ylim([0,1]) + matplotlib.pyplot.savefig("%s_plot_means.png" % (NAME)) + + # Test for pass/fail: check that each shot is brighter than the previous. + for means in [r_means, g_means, b_means]: + for i in range(len(means)-1): + assert(means[i+1] - means[i] > THRESHOLD_MIN_DIFF) + +if __name__ == '__main__': + main() + |