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
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
\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
\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
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
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
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
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
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
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
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