aboutsummaryrefslogtreecommitdiff
path: root/apps/CameraITS/tests/scene1/test_param_sensitivity.py
diff options
context:
space:
mode:
authorTimothy Knight <tknight@google.com>2014-07-12 00:46:11 -0700
committerTimothy Knight <tknight@google.com>2014-07-12 00:55:49 -0700
commit312c1c3e4faad4e77070059d3b88acd3754daa48 (patch)
tree343d5f1248e30e227c6f1b64307fc473dc373192 /apps/CameraITS/tests/scene1/test_param_sensitivity.py
parent5e8601829f70fc5aa6e66b9f5a597915ce50e366 (diff)
downloadpdk-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.py72
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()
+