From c81469b25918de9f90d383fd96a4180d7c2e5508 Mon Sep 17 00:00:00 2001 From: Thomas Schultz Date: Wed, 7 Dec 2016 14:35:12 -0500 Subject: [PATCH] Add Vision detect_text() system tests. --- system_tests/data/text.jpg | Bin 0 -> 23841 bytes system_tests/vision.py | 64 ++++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 system_tests/data/text.jpg diff --git a/system_tests/data/text.jpg b/system_tests/data/text.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39c601c8d3158c945e9639fed0ec108647eaa5c5 GIT binary patch literal 23841 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