00001
00002 from freenect_synch import get_depth, get_rgb
00003 import cv
00004 import numpy as np
00005
00006
00007 def array2cv(a):
00008 dtype2depth = {
00009 'uint8': cv.IPL_DEPTH_8U,
00010 'int8': cv.IPL_DEPTH_8S,
00011 'uint16': cv.IPL_DEPTH_16U,
00012 'int16': cv.IPL_DEPTH_16S,
00013 'int32': cv.IPL_DEPTH_32S,
00014 'float32': cv.IPL_DEPTH_32F,
00015 'float64': cv.IPL_DEPTH_64F,
00016 }
00017 try:
00018 nChannels = a.shape[2]
00019 except:
00020 nChannels = 1
00021 cv_im = cv.CreateImageHeader((a.shape[1],a.shape[0]),
00022 dtype2depth[str(a.dtype)],
00023 nChannels)
00024 cv.SetData(cv_im, a.tostring(),
00025 a.dtype.itemsize*nChannels*a.shape[1])
00026 return cv_im
00027
00028 def doloop():
00029 cv.NamedWindow('depth')
00030 cv.NamedWindow('rgb')
00031 global depth, rgb
00032 while True:
00033
00034 depth, rgb = get_depth(), get_rgb()
00035
00036
00037 d3 = np.dstack((depth,depth,depth)).astype(np.uint8)
00038 da = np.hstack((d3,rgb))
00039
00040
00041 cv.ShowImage('both',array2cv(da[::2,::2,::-1]))
00042 cv.WaitKey(5)
00043
00044 doloop()
00045
00046 """
00047 IPython usage:
00048 ipython
00049 [1]: run -i demo_bgf
00050 #<ctrl -c> (to interrupt the loop)
00051 [2]: %timeit -n100 QueryDepth(),QueryRGB() # profile the kinect capture
00052
00053 """
00054