Esempio n. 1
0
def test_mean_smooth(pts):
    #factor = 640 / 368.0
    C0, C1, d0, d1 = load_camera_from_calibr('../calibr-1211/camchain-homeyihuaDesktopCPM3D_kalibrfinal3.yaml')
    pts3d = []
    for k in range(14):
        p0 = pts[k,:2]
        p1 = pts[k,2:]
        p0, p1 = p1, p0
        p3d = triangulate(C0, C1, p0, p1)
        pts3d.append(p3d)
    pts3d = np.array(pts3d)
    return pts3d
import sys, os

from tensorpack.utils.fs import mkdir_p
from runner import get_runner, get_parallel_runner
from model import colorize
from calibr import load_camera_from_calibr

if __name__ == '__main__':
    dir = sys.argv[1]
    undistdir = sys.argv[2]
    outdir = sys.argv[3]
    mkdir_p(undistdir)
    mkdir_p(outdir)
    runner, _ = get_runner('../data/cpm.npy')

    C0, C1, d0, d1 = load_camera_from_calibr(
        '../calibr-1211/camchain-homeyihuaDesktopCPM3D_kalibrfinal3.yaml')
    for f in sorted(glob.glob(os.path.join(dir, '*.jpg'))):
        im = cv2.imread(f, cv2.IMREAD_COLOR)

        im = cv2.undistort(im, C0.K, d0)

        cv2.imwrite(os.path.join(undistdir, os.path.basename(f)), im)

        im = cv2.resize(im, (368, 368))
        out = runner(im)
        np.save(os.path.join(outdir, os.path.basename(f)), out)

        #viz = colorize(im, out[:,:,:-1].sum(axis=2))
        #cv2.imshow("", viz/255.0)
        #cv2.waitKey()
        print f
Esempio n. 3
0
def final():
    camera = libcpm.Camera()
    camera.setup()

    # cpp matcher:
    pmatcher = libcpm.PatchMatch()
    pmatcher.init(camera, 20)

    # python matcher:
    #bgs0, bgs1 = [], []
    #for k in range(20):
    #m1 = camera.get_for_py(0)
    #m1 = np.array(m1, copy=True)
    #m2 = camera.get_for_py(1)
    #m2 = np.array(m2, copy=True)
    #bgs0.append(m1)
    #bgs1.append(m2)
    #matcher = Matcher(BackgroundSegmentor(bgs0), BackgroundSegmentor(bgs1))

    runner = get_parallel_runner('../data/cpm.npy')

    viewer = libcpm.StereoCameraViewer(camera)
    viewer.start()

    C1, C0, d1, d0 = load_camera_from_calibr(
        '../calibr-1211/camchain-homeyihuaDesktopCPM3D_kalibrfinal3.yaml')
    queue = deque(maxlen=2)

    ctx = zmq.Context()
    sok = ctx.socket(zmq.PUSH)
    global args
    sok.connect('tcp://{}:8888'.format(args.host))

    def cpp_matcher(m1, m2, o1, o2):
        o1 = libcpm.Mat(o1)
        o2 = libcpm.Mat(o2)
        out = pmatcher.match_with_hm(m1, m2, o1, o2)
        return np.asarray(out).reshape(14, 4)  #14 x 2image x (x,y)

    pts3ds = []
    cnt = 0
    while True:
        cnt += 1
        print 'begin---', time.time()
        m1 = camera.get_for_py(0)
        m1r = np.array(m1, copy=False)
        m2 = camera.get_for_py(1)
        m2r = np.array(m2, copy=False)

        m1s = cv2.resize(m1r, (368, 368))
        m2s = cv2.resize(m2r, (368, 368))
        print 'after resize---', time.time()

        o1, o2 = runner(m1s, m2s)
        print 'after cpm---', time.time()

        #pts14x4 = matcher.match(m1r, m2r, o1, o2)
        pts14x4 = cpp_matcher(m1, m2, o1, o2)

        #to_save = (m1s, m2s, o1, o2, pts14x4)
        #fout = open('full-recording/{:04d}.dat'.format(cnt), 'wb')
        #fout.write(dumps(to_save))
        #fout.close()

        print 'after match---', time.time()
        queue.append(pts14x4)
        p2d = np.mean(queue, axis=0)
        p3ds = np.zeros((14, 3))
        for c in range(14):
            p3d = triangulate(C0, C1, p2d[c, :2], p2d[c, 2:])
            p3ds[c, :] = p3d
        sok.send(dumps(p3ds))
        print p3ds
        print 'after send---', time.time()
        print '-----------------'