[pypy-commit] extradoc extradoc: refacor to push images to preceeding steps instead of pulling from previous
hakanardo
noreply at buildbot.pypy.org
Wed Sep 12 07:54:06 CEST 2012
Author: Hakan Ardo <hakan at debian.org>
Branch: extradoc
Changeset: r4790:5944e2c4015f
Date: 2012-09-12 07:48 +0200
http://bitbucket.org/pypy/extradoc/changeset/5944e2c4015f/
Log: refacor to push images to preceeding steps instead of pulling from
previous
diff --git a/talk/dls2012/demo/analytics.py b/talk/dls2012/demo/analytics.py
new file mode 100644
--- /dev/null
+++ b/talk/dls2012/demo/analytics.py
@@ -0,0 +1,14 @@
+from reloader import ReloadHack
+from io import view
+from background import Background
+from foreground import Foreground
+
+class Tracker(ReloadHack):
+ def __init__(self):
+ self.bkg = Background()
+ self.fg = Foreground()
+
+ def update(self, img):
+ background = self.bkg.update(img)
+ fg = self.fg.update(img, background)
+ view(255*fg, 'bkg')
diff --git a/talk/dls2012/demo/analytics_1.py b/talk/dls2012/demo/analytics_1.py
new file mode 100644
--- /dev/null
+++ b/talk/dls2012/demo/analytics_1.py
@@ -0,0 +1,6 @@
+from reloader import ReloadHack
+from io import view
+
+class Tracker(ReloadHack):
+ def update(self, img):
+ view(img, 'bkg')
diff --git a/talk/dls2012/demo/analytics_2.py b/talk/dls2012/demo/analytics_2.py
new file mode 100644
--- /dev/null
+++ b/talk/dls2012/demo/analytics_2.py
@@ -0,0 +1,6 @@
+from reloader import ReloadHack
+from io import view
+
+class Tracker(ReloadHack):
+ def update(self, img):
+ view(2 * img, 'bkg')
diff --git a/talk/dls2012/demo/analytics_3.py b/talk/dls2012/demo/analytics_3.py
new file mode 100644
--- /dev/null
+++ b/talk/dls2012/demo/analytics_3.py
@@ -0,0 +1,11 @@
+from reloader import ReloadHack
+from io import view
+from background import Background
+
+class Tracker(ReloadHack):
+ def __init__(self):
+ self.bkg = Background()
+
+ def update(self, img):
+ background = self.bkg.update(img)
+ view(background, 'bkg')
diff --git a/talk/dls2012/demo/background.py b/talk/dls2012/demo/background.py
new file mode 100644
--- /dev/null
+++ b/talk/dls2012/demo/background.py
@@ -0,0 +1,11 @@
+from reloader import ReloadHack
+
+class Background(ReloadHack):
+ def __init__(self):
+ self.fcnt = self.bkg = 0
+
+ def update(self, img):
+ self.bkg = (self.fcnt * self.bkg + img) / (self.fcnt + 1)
+ self.fcnt += 1
+ return self.bkg
+
diff --git a/talk/dls2012/demo/fgbg.py b/talk/dls2012/demo/fgbg.py
deleted file mode 100644
--- a/talk/dls2012/demo/fgbg.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from reloader import ReloadHack
-
- at ReloadHack
-def background(video):
- bkg = fcnt = 0
- for img in video:
- bkg = (fcnt * bkg + img) / (fcnt + 1)
- fcnt += 1
- fg = ((bkg - img) ** 2) > 40
- #yield img
- yield fg * 255
-
-
diff --git a/talk/dls2012/demo/foreground.py b/talk/dls2012/demo/foreground.py
new file mode 100644
--- /dev/null
+++ b/talk/dls2012/demo/foreground.py
@@ -0,0 +1,6 @@
+from reloader import ReloadHack
+
+class Foreground(ReloadHack):
+ def update(self, img, bkg):
+ return ((bkg - img) ** 2) > 100
+
diff --git a/talk/dls2012/demo/foreground_1.py b/talk/dls2012/demo/foreground_1.py
new file mode 100644
--- /dev/null
+++ b/talk/dls2012/demo/foreground_1.py
@@ -0,0 +1,6 @@
+from reloader import ReloadHack
+
+class Foreground(ReloadHack):
+ def update(self, img, bkg):
+ return ((bkg - img) ** 2) > 50
+
diff --git a/talk/dls2012/demo/reloader.py b/talk/dls2012/demo/reloader.py
--- a/talk/dls2012/demo/reloader.py
+++ b/talk/dls2012/demo/reloader.py
@@ -1,18 +1,16 @@
import os, sys, time, traceback
class ReloadHack(object):
- def __init__(self, iterator_class):
- self.module = sys.modules[iterator_class.__module__]
- self.filename = self.module.__file__
- if self.filename.endswith('.pyc'):
- self.filename = self.filename[:-1]
- self.name = iterator_class.__name__
- self.mtime = -1
- self.iterator_class = iterator_class
+ def __new__(cls, *new_args, **new_kwargs):
+ class Wrapper(object):
+ module = sys.modules[cls.__module__]
+ filename = module.__file__
+ if filename.endswith('.pyc'):
+ filename = filename[:-1]
+ name = cls.__name__
+ mtime = -1
- def __call__(self, *args, **kwargs):
- def wrapper():
- while True:
+ def update(self, *args, **kwargs):
while True:
try:
mtime = os.stat(self.filename).st_mtime
@@ -23,22 +21,22 @@
if mtime > self.mtime:
self.mtime = mtime
reload(self.module)
- self.iterator_class = getattr(self.module, self.name).iterator_class
- obj = iter(self.iterator_class(*args, **kwargs))
- halted = False
+ cls = getattr(self.module, self.name)
+ self.obj = object.__new__(cls)
+ self.obj.__init__(*new_args, **new_kwargs)
+ self.halted = False
except Exception as e:
print
traceback.print_exc()
else:
- if not halted:
+ if not self.halted:
break
try:
- yield obj.next()
+ return self.obj.update(*args, **kwargs)
except Exception as e:
print
traceback.print_exc()
- halted = True
+ self.halted = True
+ return Wrapper()
- return wrapper()
-
diff --git a/talk/dls2012/demo/run.py b/talk/dls2012/demo/run.py
--- a/talk/dls2012/demo/run.py
+++ b/talk/dls2012/demo/run.py
@@ -1,15 +1,15 @@
from io import mplayer, view
-from process import process
+from analytics import Tracker
import sys
if len(sys.argv) > 1:
- video = mplayer(sys.argv[1])
+ fn = sys.argv[1]
else:
- video = mplayer()
+ fn = 'tv://'
-result = process(video)
+tracker = Tracker()
+for img in mplayer(fn):
+ view(img)
+ tracker.update(img)
-for img in result:
- view(img)
-
More information about the pypy-commit
mailing list