all video processing samples use camera as default source (and fallback to synth...
authorAlexander Mordvintsev <no@email>
Mon, 22 Aug 2011 13:36:21 +0000 (13:36 +0000)
committerAlexander Mordvintsev <no@email>
Mon, 22 Aug 2011 13:36:21 +0000 (13:36 +0000)
samples/python2/camshift.py
samples/python2/color_histogram.py
samples/python2/edge.py
samples/python2/facedetect.py
samples/python2/lk_track.py
samples/python2/motempl.py
samples/python2/opt_flow.py
samples/python2/video.py

index 79b4c29..1b4a678 100644 (file)
@@ -98,7 +98,7 @@ class App(object):
 if __name__ == '__main__':\r
     import sys\r
     try: video_src = sys.argv[1]\r
-    except: video_src = video.presets['chess']\r
+    except: video_src = 0\r
     print help_message\r
     App(video_src).run()\r
 \r
index 7038dc6..f2deb84 100644 (file)
@@ -23,8 +23,8 @@ if __name__ == '__main__':
     cv2.createTrackbar('scale', 'hist', hist_scale, 32, set_scale)\r
 \r
     try: fn = sys.argv[1]\r
-    except: fn = 'synth:bg=../cpp/baboon.jpg:class=chess:noise=0.05'\r
-    cam = video.create_capture(fn)\r
+    except: fn = 0\r
+    cam = video.create_capture(fn, fallback='synth:bg=../cpp/baboon.jpg:class=chess:noise=0.05')\r
 \r
     while True:\r
         flag, frame = cam.read()\r
index cd5d216..4fa43d8 100644 (file)
@@ -4,7 +4,7 @@ import sys
 \r
 if __name__ == '__main__':\r
     try: fn = sys.argv[1]\r
-    except: fn = video.presets['chess']\r
+    except: fn = 0\r
 \r
     def nothing(*arg):\r
         pass\r
index 5fe9951..20bce3d 100644 (file)
@@ -25,7 +25,7 @@ if __name__ == '__main__':
     \r
     args, video_src = getopt.getopt(sys.argv[1:], '', ['cascade=', 'nested-cascade='])\r
     try: video_src = video_src[0]\r
-    except: video_src = 'synth:bg=../cpp/lena.jpg:noise=0.05'\r
+    except: video_src = 0\r
     args = dict(args)\r
     cascade_fn = args.get('--cascade', "../../data/haarcascades/haarcascade_frontalface_alt.xml")\r
     nested_fn  = args.get('--nested-cascade', "../../data/haarcascades/haarcascade_eye.xml")\r
@@ -33,7 +33,7 @@ if __name__ == '__main__':
     cascade = cv2.CascadeClassifier(cascade_fn)\r
     nested = cv2.CascadeClassifier(nested_fn)\r
 \r
-    cam = create_capture(video_src)\r
+    cam = create_capture(video_src, fallback='synth:bg=../cpp/lena.jpg:noise=0.05')\r
 \r
     while True:\r
         ret, img = cam.read()\r
index 8a157e1..10e3961 100644 (file)
@@ -77,7 +77,7 @@ class App:
 def main():\r
     import sys\r
     try: video_src = sys.argv[1]\r
-    except: video_src = video.presets['chess']\r
+    except: video_src = 0\r
 \r
     print help_message\r
     App(video_src).run()\r
index a333fcd..882649f 100644 (file)
@@ -12,21 +12,21 @@ def draw_motion_comp(vis, (x, y, w, h), angle, color):
     cv2.rectangle(vis, (x, y), (x+w, y+h), (0, 255, 0))\r
     r = min(w/2, h/2)\r
     cx, cy = x+w/2, y+h/2\r
-    angle = angle*3.1415926/180\r
+    angle = angle*np.pi/180\r
     cv2.circle(vis, (cx, cy), r, color, 3)\r
     cv2.line(vis, (cx, cy), (int(cx+np.cos(angle)*r), int(cy+np.sin(angle)*r)), color, 3)\r
 \r
 if __name__ == '__main__':\r
     import sys\r
     try: video_src = sys.argv[1]\r
-    except: video_src = 'synth:class=chess:bg=../cpp/lena.jpg:noise=0.01'\r
+    except: video_src = 0\r
 \r
     cv2.namedWindow('motempl')\r
     visuals = ['input', 'frame_diff', 'motion_hist', 'grad_orient']\r
     cv2.createTrackbar('visual', 'motempl', 2, len(visuals)-1, nothing)\r
     cv2.createTrackbar('threshold', 'motempl', DEFAULT_THRESHOLD, 255, nothing)\r
 \r
-    cam = video.create_capture(video_src)\r
+    cam = video.create_capture(video_src, fallback='synth:class=chess:bg=../cpp/lena.jpg:noise=0.01')\r
     ret, frame = cam.read()\r
     h, w = frame.shape[:2]\r
     prev_frame = frame.copy()\r
index 03cdb3f..a22adb2 100644 (file)
@@ -47,7 +47,7 @@ if __name__ == '__main__':
     import sys\r
     print help_message\r
     try: fn = sys.argv[1]\r
-    except: fn = video.presets['chess']\r
+    except: fn = 0\r
 \r
     cam = video.create_capture(fn)\r
     ret, prev = cam.read()\r
index d18ee82..80e1282 100644 (file)
@@ -39,6 +39,9 @@ class VideoSynthBase(object):
             buf = cv2.add(buf, noise, dtype=cv2.CV_8UC3)\r
         return True, buf\r
 \r
+    def isOpened(self):\r
+        return True\r
+\r
 class Chess(VideoSynthBase):\r
     def __init__(self, **kw):\r
         super(Chess, self).__init__(**kw)\r
@@ -87,33 +90,40 @@ class Chess(VideoSynthBase):
         self.draw_quads(dst, self.black_quads, (10, 10, 10))\r
 \r
 \r
-\r
 classes = dict(chess=Chess)\r
 \r
-def create_capture(source):\r
+presets = dict(\r
+    empty = 'synth:',\r
+    lena = 'synth:bg=../cpp/lena.jpg:noise=0.1',\r
+    chess = 'synth:class=chess:bg=../cpp/lena.jpg:noise=0.1:size=640x480'\r
+)\r
+\r
+\r
+def create_capture(source = 0, fallback = presets['chess']):\r
     '''\r
       source: <int> or '<int>' or '<filename>' or 'synth:<params>'\r
     '''\r
+    cap = None\r
     try: source = int(source)\r
     except ValueError: pass\r
     else:\r
-        return cv2.VideoCapture(source)\r
-    source = str(source).strip()\r
-    if source.startswith('synth'):\r
-        ss = filter(None, source.split(':'))\r
-        params = dict( s.split('=') for s in ss[1:] )\r
-        try: Class = classes[params['class']]\r
-        except: Class = VideoSynthBase\r
-\r
-        return Class(**params)\r
-    return cv2.VideoCapture(source)\r
-\r
-\r
-presets = dict(\r
-    empty = 'synth:',\r
-    lena = 'synth:bg=../cpp/lena.jpg:noise=0.1',\r
-    chess = 'synth:class=chess:bg=../cpp/lena.jpg:noise=0.1:size=640x480'\r
-)\r
+        cap = cv2.VideoCapture(source)\r
+    if cap is None:\r
+        source = str(source).strip()\r
+        if source.startswith('synth'):\r
+            ss = filter(None, source.split(':'))\r
+            params = dict( s.split('=') for s in ss[1:] )\r
+            try: Class = classes[params['class']]\r
+            except: Class = VideoSynthBase\r
+            try: cap = Class(**params)\r
+            except: pass\r
+    if cap is None:\r
+        cap = cv2.VideoCapture(source)\r
+    if not cap.isOpened():\r
+        print 'Warning: unable to open video source: ', source\r
+        if fallback is not None:\r
+            return create_capture(fallback, None)\r
+    return cap\r
 \r
 if __name__ == '__main__':\r
     import sys\r
@@ -127,7 +137,7 @@ if __name__ == '__main__':
     args = dict(args)\r
     shotdir = args.get('--shotdir', '.')\r
     if len(sources) == 0:\r
-        sources = [ presets['chess'] ]\r
+        sources = [ 0 ]\r
 \r
     print 'Press SPACE to save current frame'\r
 \r