import numpy as np\r
import cv2, cv\r
from common import draw_str\r
+import getopt, sys\r
+from itertools import count\r
+\r
+help_message = '''\r
+USAGE: turing.py [-o <output.avi>]\r
+\r
+Press ESC to stop.\r
+'''\r
+print help_message\r
\r
w, h = 512, 512\r
\r
+args, args_list = getopt.getopt(sys.argv[1:], 'o:', [])\r
+args = dict(args)\r
+out = None\r
+if '-o' in args:\r
+ fn = args['-o']\r
+ out = cv2.VideoWriter(args['-o'], cv.CV_FOURCC(*'DIB '), 30.0, (w, h), False)\r
+ print 'writing %s ...' % fn\r
+\r
a = np.zeros((h, w), np.float32)\r
cv2.randu(a, np.array([0]), np.array([1]))\r
\r
v = cv2.GaussianBlur(d*d, (3, 3), 0)\r
return np.sign(d), v\r
\r
-print 'Generating AVI file. Press ESC to stop.'\r
-out = cv2.VideoWriter('turing.avi', cv.CV_FOURCC(*'DIB '), 30.0, (w, h), False)\r
-\r
scale_num = 6\r
-frame_num = 1000\r
-for frame_i in xrange(frame_num):\r
+for frame_i in count():\r
a_lods = [a]\r
for i in xrange(scale_num):\r
a_lods.append(cv2.pyrDown(a_lods[-1])) \r
a += np.choose(mi, ms) * 0.025\r
a = (a-a.min()) / a.ptp()\r
\r
- out.write(a)\r
+ if out:\r
+ out.write(a)\r
vis = a.copy()\r
- draw_str(vis, (20, 20), 'frame %d / %d' % (frame_i+1, frame_num))\r
+ draw_str(vis, (20, 20), 'frame %d' % frame_i)\r
cv2.imshow('a', vis)\r
if cv2.waitKey(5) == 27:\r
break\r
-else:\r
- print 'done'\r
- cv2.waitKey()
\ No newline at end of file