def player(g_pool,size): """player - Shows 9 point calibration pattern - Plays a source video synchronized with world process - Get src videos from directory (glob) - Iterate through videos on each record event """ grid = make_grid() grid *=2.5###scale to fit # player object player = Temp() player.play_list = glob('src_video/*') path_parent = os.path.dirname( os.path.abspath(sys.argv[0])) player.playlist = [os.path.join(path_parent, path) for path in player.play_list] player.captures = [autoCreateCapture(src) for src in player.playlist] print "Player found %i videos in src_video"%len(player.captures) player.captures = [c for c in player.captures if c is not None] print "Player sucessfully loaded %i videos in src_video"%len(player.captures) # for c in player.captures: c.auto_rewind = False player.current_video = 0 # Callbacks def on_resize(w, h): adjust_gl_view(w,h) def on_key(key, pressed): if key == GLFW_KEY_ESC: on_close() def on_char(char, pressed): if pressed: g_pool.player_input.value = char def on_close(): g_pool.quit.value = True print "Player Process closing from window" def draw_circle(pos,r,c): pts = cv2.ellipse2Poly(tuple(pos),(r,r),0,0,360,10) draw_gl_polyline(pts,c,'Polygon') def draw_marker(pos): pos = int(pos[0]),int(pos[1]) black = (0.,0.,0.,1.) white = (1.,1.,1.,1.) for r,c in zip((50,40,30,20,10),(black,white,black,white,black)): draw_circle(pos,r,c) # Initialize glfw glfwInit() glfwOpenWindow(size[0], size[1], 0, 0, 0, 8, 0, 0, GLFW_WINDOW) glfwSetWindowTitle("Player") glfwSetWindowPos(100,0) glfwDisable(GLFW_AUTO_POLL_EVENTS) # Callbacks glfwSetWindowSizeCallback(on_resize) glfwSetWindowCloseCallback(on_close) glfwSetKeyCallback(on_key) glfwSetCharCallback(on_char) # gl state settings gl.glEnable(gl.GL_POINT_SMOOTH) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) gl.glEnable(gl.GL_BLEND) gl.glDisable (gl.GL_DEPTH_TEST) gl.glClearColor(1.,1.,1.,0.) while glfwGetWindowParam(GLFW_OPENED) and not g_pool.quit.value: glfwPollEvents() if g_pool.player_refresh.wait(0.01): g_pool.player_refresh.clear() clear_gl_screen() if g_pool.marker_state.value !=0: # Set Matrix unsing gluOrtho2D to include padding for the marker of radius r # ############################ # r # # 0,0##################w,h # # # # # # # # # #r# #r# # # # # # # # # # 0,h##################w,h # # r # ############################ r = 60 gl.glMatrixMode(gl.GL_PROJECTION) gl.glLoadIdentity() # compensate for radius of marker gluOrtho2D(-r,glfwGetWindowSize()[0]+r,glfwGetWindowSize()[1]+r, -r) # origin in the top left corner just like the img np-array # Switch back to Model View Matrix gl.glMatrixMode(gl.GL_MODELVIEW) gl.glLoadIdentity() screen_pos = denormalize(g_pool.marker[:],glfwGetWindowSize(),flip_y=True) #some feedback on the detection state draw_marker(screen_pos) if g_pool.ref[:] == [0.,0.]: # world ref is detected draw_gl_point(screen_pos, 5.0, (1.,0.,0.,1.)) else: draw_gl_point(screen_pos, 5.0, (0.,1.,0.,1.)) elif g_pool.play.value: if len(player.captures): frame = player.captures[player.current_video].get_frame() img = frame.img if img: draw_gl_texture(img) else: player.captures[player.current_video].rewind() player.current_video +=1 if player.current_video >= len(player.captures): player.current_video = 0 g_pool.play.value = False else: print 'PLAYER: Warning: No Videos available to play. Please put your vidoes into a folder called "src_video" in the Capture folder.' g_pool.play.value = False glfwSwapBuffers() glfwCloseWindow() glfwTerminate() print "PLAYER Process closed"
def player(g_pool,size): """player - Shows 9 point calibration pattern - Plays a source video synchronized with world process - Get src videos from directory (glob) - Iterate through videos on each record event """ grid = make_grid() grid *=2.5###scale to fit # player object player = Temp() player.play_list = glob('src_video/*') path_parent = os.path.dirname( os.path.abspath(sys.argv[0])) player.playlist = [os.path.join(path_parent, path) for path in player.play_list] player.captures = [autoCreateCapture(src) for src in player.playlist] print "Player found %i videos in src_video"%len(player.captures) player.captures = [c for c in player.captures if c is not None] print "Player sucessfully loaded %i videos in src_video"%len(player.captures) # for c in player.captures: c.auto_rewind = False player.current_video = 0 # Callbacks def on_resize(w, h): adjust_gl_view(w,h) def on_key(key, pressed): if key == GLFW_KEY_ESC: on_close() def on_char(char, pressed): if char == ord('9'): g_pool.cal9.value = True g_pool.calibrate.value = True def on_close(): g_pool.quit.value = True print "Player Process closing from window" # initialize glfw glfwInit() glfwOpenWindow(size[0], size[1], 0, 0, 0, 8, 0, 0, GLFW_WINDOW) glfwSetWindowTitle("Player") glfwSetWindowPos(100,0) glfwDisable(GLFW_AUTO_POLL_EVENTS) #Callbacks glfwSetWindowSizeCallback(on_resize) glfwSetWindowCloseCallback(on_close) glfwSetKeyCallback(on_key) glfwSetCharCallback(on_char) #gl state settings gl.glEnable( gl.GL_BLEND ) gl.glEnable(gl.GL_POINT_SMOOTH) gl.glClearColor(1.,1.,1.,0.) while glfwGetWindowParam(GLFW_OPENED) and not g_pool.quit.value: glfwPollEvents() if g_pool.player_refresh.wait(0.01): g_pool.player_refresh.clear() clear_gl_screen() if g_pool.cal9.value: circle_id,step = g_pool.cal9_circle_id.value,g_pool.cal9_step.value gl.glColor4f(0.0,0.0,0.0,1.0) gl.glPointSize(40) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) gl.glBegin(gl.GL_POINTS) for p in grid: gl.glVertex3f(p[0],p[1],0.0) gl.glEnd() ###display the animated target dot gl.glPointSize((40)*(1.01-(step+1)/80.0)) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ZERO) if g_pool.ref_x.value or g_pool.ref_y.value: ###if pattern detected gl.glColor4f(0.0,0.5,0.0,1.0) else: gl.glColor4f(0.5,0.0,0.0,1.0) gl.glBegin(gl.GL_POINTS) gl.glVertex3f(grid[circle_id][0],grid[circle_id][1],0.0) gl.glEnd() elif g_pool.play.value: s, img = player.captures[player.current_video].read_RGB() if s: draw_gl_texture(image) else: player.captures[player.current_video].rewind() player.current_video +=1 if player.current_video >= len(player.captures): player.current_video = 0 g_pool.play.value = False glfwSwapBuffers() glfwCloseWindow() glfwTerminate() print "PLAYER Process closed"