--- /dev/null
+import cv2, cv\r
+import video\r
+import sys\r
+\r
+try: fn = sys.argv[1]\r
+except: fn = 'synth:bg=../cpp/lena.jpg:noise=0.1'\r
+\r
+def nothing(*arg):\r
+ pass\r
+\r
+cv2.namedWindow('edge')\r
+cv.CreateTrackbar('thrs1', 'edge', 2000, 5000, nothing)\r
+cv.CreateTrackbar('thrs2', 'edge', 4000, 5000, nothing)\r
+\r
+cap = video.create_capture(fn)\r
+while True:\r
+ flag, img = cap.read()\r
+ gray = cv2.cvtColor(img, cv.CV_BGR2GRAY)\r
+ thrs1 = cv2.getTrackbarPos('thrs1', 'edge')\r
+ thrs2 = cv2.getTrackbarPos('thrs2', 'edge')\r
+ edge = cv2.canny(gray, thrs1, thrs2, apertureSize=5)\r
+ vis = img.copy()\r
+ vis /= 2\r
+ vis[edge != 0] = (0, 255, 0)\r
+ cv2.imshow('edge', vis)\r
+ ch = cv2.waitKey(5)\r
+ if ch == 27:\r
+ break\r
+\r
--- /dev/null
+import numpy as np\r
+import cv2\r
+\r
+class VideoSynth(object):\r
+ def __init__(self, size=None, noise=0.0, bg = None, **params):\r
+ self.bg = None\r
+ self.frame_size = (640, 480)\r
+ if bg is not None:\r
+ self.bg = cv2.imread(bg, 1)\r
+ h, w = self.bg.shape[:2]\r
+ self.frame_size = (w, h)\r
+ \r
+ if size is not None:\r
+ w, h = map(int, size.split('x'))\r
+ self.frame_size = (w, h)\r
+ self.bg = cv2.resize(bg, self.frame_size)\r
+\r
+ self.noise = float(noise)\r
+\r
+ def read(self, dst=None):\r
+ w, h = self.frame_size\r
+\r
+ buf = np.zeros((h, w, 3), np.uint8)\r
+ if self.bg is not None:\r
+ buf[:] = self.bg\r
+ if self.noise > 0.0:\r
+ noise = np.random.normal(scale = 255*self.noise, size=(h, w, 3))\r
+ buf = cv2.add(buf, noise, dtype=cv2.CV_8UC3)\r
+ return True, buf\r
+\r
+\r
+def create_capture(source):\r
+ '''\r
+ source: <int> or '<int>' or '<filename>' or 'synth:<params>'\r
+ '''\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
+ return VideoSynth(**params)\r
+ return cv2.VideoCapture(source)\r
+\r
+\r
+if __name__ == '__main__':\r
+ import sys\r
+ try: fn = sys.argv[1]\r
+ except: fn = 'synth:bg=../cpp/lena.jpg:noise=0.1'\r
+\r
+ cap = create_capture(fn)\r
+ while True:\r
+ ret, img = cap.read()\r
+ cv2.imshow('img', img)\r
+ ch = cv2.waitKey(1)\r
+ if ch == 27:\r
+ break\r