python helper routines (common.py) added
authorAlexander Mordvintsev <no@email>
Tue, 14 Jun 2011 15:02:57 +0000 (15:02 +0000)
committerAlexander Mordvintsev <no@email>
Tue, 14 Jun 2011 15:02:57 +0000 (15:02 +0000)
samples/python2/calibrate.py
samples/python2/common.py [new file with mode: 0644]
samples/python2/video.py

index f334ba2..cc35535 100644 (file)
@@ -26,8 +26,7 @@ if __name__ == '__main__':
     try: img_mask = img_mask[0]\r
     except: img_mask = '../cpp/left*.jpg'\r
     img_names = glob(img_mask)\r
-    try: debug_dir = args['--debug']\r
-    except: debug_dir = None\r
+    debug_dir = args.get('--debug')\r
 \r
     pattern_size = (9, 6)\r
     pattern_points = np.zeros( (np.prod(pattern_size), 3), np.float32 )\r
diff --git a/samples/python2/common.py b/samples/python2/common.py
new file mode 100644 (file)
index 0000000..27e1b34
--- /dev/null
@@ -0,0 +1,72 @@
+import numpy as np\r
+import cv2\r
+\r
+def to_list(a):\r
+    return [tuple(p) for p in a]\r
+\r
+def anorm2(a):\r
+    return (a*a).sum(-1)\r
+def anorm(a):\r
+    return np.sqrt( anorm2(a) )\r
+\r
+def homotrans(H, x, y):\r
+    xs = H[0, 0]*x + H[0, 1]*y + H[0, 2]\r
+    ys = H[1, 0]*x + H[1, 1]*y + H[1, 2]\r
+    s  = H[2, 0]*x + H[2, 1]*y + H[2, 2]\r
+    return xs/s, ys/s\r
+\r
+def to_rect(a):\r
+    a = np.ravel(a)\r
+    if len(a) == 2:\r
+        a = (0, 0, a[0], a[1])\r
+    return np.array(a, np.float64).reshape(2, 2)\r
+\r
+def rect2rect_mtx(src, dst):\r
+    src, dst = to_rect(src), to_rect(dst)\r
+    cx, cy = (dst[1] - dst[0]) / (src[1] - src[0])\r
+    tx, ty = dst[0] - src[0] * (cx, cy)\r
+    M = np.float64([[ cx,  0, tx],\r
+                    [  0, cy, ty],\r
+                    [  0,  0,  1]])\r
+    return M\r
+\r
+\r
+def lookat(eye, target, up = (0, 0, 1)):\r
+    fwd = np.asarray(target, np.float64) - eye\r
+    fwd /= anorm(fwd)\r
+    right = np.cross(fwd, up)\r
+    right /= anorm(right)\r
+    down = np.cross(fwd, right)\r
+    Rt = np.zeros((3, 4))\r
+    Rt[:,:3] = [right, down, fwd]\r
+    Rt[:,3] = -np.dot(Rt[:,:3], eye)\r
+    return Rt\r
+\r
+def mtx2rvec(R):\r
+    pass\r
+    \r
+\r
+if __name__ == '__main__':\r
+    import cv2\r
+    from time import clock\r
+\r
+    '''\r
+    w, h = 640, 480\r
+    while True:\r
+        img = np.zeros((h, w, 3), np.uint8)\r
+        t = clock()\r
+        eye = [5*cos(t), 5*sin(t), 3]\r
+        Rt = lookat(eye, [0, 0, 0])\r
+    '''\r
+\r
+\r
+\r
+    eye = [1, -4, 3]\r
+    target = [0, 0, 0]\r
+    Rt = lookat(eye, [0, 0, 0])\r
+    print Rt\r
+    p = [0, 0, 0]\r
+    print cv2.transform(np.float64([[p]]), Rt)\r
+\r
+    print cv2.SVDecomp(Rt[:,:3])\r
+\r
index 232f3ae..a87d977 100644 (file)
@@ -64,6 +64,7 @@ def create_capture(source):
 \r
 \r
 presets = dict(\r
+    empty = 'synth:',\r
     lena = 'synth:bg=../cpp/lena.jpg:noise=0.1'\r
 )\r
 \r