[mousetrap/gnome3-wip: 48/240] Simplify camera.py; fix convention in test_camera.py



commit 01cf70023621f857b5918cf2b232268d97bc3aaf
Author: Stoney Jackson <dr stoney gmail com>
Date:   Sun May 18 11:48:22 2014 -0400

    Simplify camera.py; fix convention in test_camera.py

 src/mousetrap/core/camera.py      |   55 +++++++++++++++++-------------------
 src/mousetrap/core/test_camera.py |    2 +-
 2 files changed, 27 insertions(+), 30 deletions(-)
---
diff --git a/src/mousetrap/core/camera.py b/src/mousetrap/core/camera.py
index 595cdf2..3d31f0a 100644
--- a/src/mousetrap/core/camera.py
+++ b/src/mousetrap/core/camera.py
@@ -18,44 +18,41 @@
 # You should have received a copy of the GNU General Public License
 # along with mouseTrap.  If not, see <http://www.gnu.org/licenses/>.
 
-__id__        = "$Id$"
-__version__   = "$Revision$"
-__date__      = "$Date$"
+__id__ = "$Id$"
+__version__ = "$Revision$"
+__date__ = "$Date$"
 __copyright__ = "Copyright (c) 2008 Flavio Percoco Premoli"
-__license__   = "GPLv2"
+__license__ = "GPLv2"
 
 import cv2
 
 
 class Camera(object):
 
-    def __init__(self, dev=0):
-        self.dev_id = None
-        self.capture = None
-        self.img = None
-
-        self.set_dev_id(dev)
-        self.start_camera()
+    def __init__(self, device_id=0):
+        self._device_id = device_id
+        self._capture = None
 
     def start_camera(self):
-        """
-        Start a new Video capture feed with the Web Camera
-        """
-        self.capture = cv2.VideoCapture(self.dev_id)
-
-    def set_dev_id(self, dev=0):
-        """
-        Sets the camera id for the device to be used
-        Arguments:
-         - dev: The Camera's Id (Default is 0)
-        """
-        self.dev_id = dev
+        self._capture = cv2.VideoCapture(self._device_id)
 
     def get_image(self):
-        """
-        Reads a new image from the camera
-        Returns the new image
-        """
-        ret, self.img = self.capture.read()
+        if not self.is_started():
+            raise CameraError("Camera has not been started.")
+        return self._read_image()
+
+    def is_started(self):
+        return self._capture is not None and self._capture.isOpened()
+
+    def _read_image(self):
+        read_was_successful, image = self._capture.read()
+        if not read_was_successful:
+            raise CameraError("Read was not successful.")
+        return image
+
+
+class CameraError(Exception):
 
-        return self.img
\ No newline at end of file
+    def __init__(self, message):
+        super(CameraError, self).__init__()
+        self.message = message
diff --git a/src/mousetrap/core/test_camera.py b/src/mousetrap/core/test_camera.py
index a99ddb1..53736d6 100644
--- a/src/mousetrap/core/test_camera.py
+++ b/src/mousetrap/core/test_camera.py
@@ -10,7 +10,7 @@ class test_camera(unittest.TestCase):
         self.camera = Camera()
 
     def test_get_image_withStart_imageReturned(self):
-        self.camera.start_camera();
+        self.camera.start_camera()
         image = self.camera.get_image()
         self.assertTrue(
             image is not None,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]