def track_no_disp_action(self, info): """ track_no_disp_action uses ptv.py_trackcorr_loop(..) binding to call tracking without display """ extern_tracker = info.object.plugins.track_alg if extern_tracker != 'default': try: current_path = os.path.abspath( os.getcwd()) # save working path os.chdir(software_path ) #change to software path, to load tracking module track = __import__( extern_tracker) #import choosen tracker from software dir except: print "Error loading " + extern_tracker + ". Falling back to default tracker" extern_tracker = 'default' os.chdir(current_path) # change back to working path if extern_tracker == 'default': print "Using default tracker" run_info = ptv.py_trackcorr_init() print run_info.get_sequence_range() for step in range(*run_info.get_sequence_range()): print step ptv.py_trackcorr_loop(run_info, step, display=0) #finalize tracking ptv.py_trackcorr_finish(run_info, step + 1) else: print "Tracking by using " + extern_tracker tracker = track.Tracking(ptv=ptv, exp1=info.object.exp1) tracker.do_tracking() print "tracking without display finished"
def track_no_disp_action(self, info): """ track_no_disp_action uses ptv.py_trackcorr_loop(..) binding to call tracking without display """ extern_tracker=info.object.plugins.track_alg if extern_tracker!='default': try: current_path=os.path.abspath(os.getcwd()) # save working path os.chdir(software_path) #change to software path, to load tracking module track=__import__(extern_tracker) #import choosen tracker from software dir except: print "Error loading "+extern_tracker+". Falling back to default tracker" extern_tracker='default' os.chdir(current_path) # change back to working path if extern_tracker=='default': print "Using default tracker" run_info = ptv.py_trackcorr_init() print run_info.get_sequence_range() for step in range(*run_info.get_sequence_range()): print step ptv.py_trackcorr_loop(run_info, step, display=0) #finalize tracking ptv.py_trackcorr_finish(run_info, step + 1) else: print "Tracking by using "+extern_tracker tracker=track.Tracking(ptv=ptv, exp1=info.object.exp1) tracker.do_tracking() print "tracking without display finished"
def run(self): print "tracking with display thread started" run_info = ptv.py_trackcorr_init() #init the relevant C function for step in range(*run_info.get_sequence_range() ): #Loop over each step in sequence self.track_step = step #Call C function to process current step and store results for plotting self.intx0, self.intx1, self.intx2, self.inty0, self.inty1, \ self.inty2, self.pnr1, self.pnr2, self.pnr3, self.m_tr = \ ptv.py_trackcorr_loop(run_info, step, display=1) self.can_continue = False GUI.invoke_later( setattr, main_gui, 'update_thread_plot', True) #invoke plotting when system is ready to process it while not self.can_continue: # wait while plotting of the current step is finished, then continue for the next step pass del self.intx0, self.intx1 ptv.py_trackcorr_finish( run_info, step + 1 ) # call finishing C function (after all the steps in the loop are processed) for i in range(len(main_gui.camera_list)): # refresh cameras main_gui.camera_list[i]._plot.request_redraw() print "tracking with display thread finished"
def sequence_tracking(n_img, track_backward=True): # get following variables from the parameters: # n_camera, seq_first, seq_last, base_name import ptv1 as ptv sequenceParams = par.SequenceParams(n_img, path=par.temp_path) sequenceParams.read() (base_name, seq_first, seq_last) = (sequenceParams.base_name, sequenceParams.first, sequenceParams.last) print("Starting sequence action") ptv.py_sequence_init(0) stepshake = ptv.py_get_from_sequence_init() if not stepshake: stepshake = 1 print stepshake temp_img = np.array([], dtype=np.ubyte) for i in range(seq_first, seq_last + 1, stepshake): if i < 10: seq_ch = "%01d" % i elif i < 100: seq_ch = "%02d" % i else: seq_ch = "%03d" % i for j in range(n_img): img_name = base_name[j] + seq_ch print("Setting image: ", img_name) try: temp_img = imread(img_name).astype(np.ubyte) except: print "Error reading file" ptv.py_set_img(temp_img, j) ptv.py_sequence_loop(0, i) # forward tracking run_info = ptv.py_trackcorr_init() print run_info.get_sequence_range() for step in range(*run_info.get_sequence_range()): print(step) try: ptv.py_trackcorr_loop(run_info, step, display=0) except: print('step', step) raise ValueError('cannot track anymore') ptv.py_trackcorr_finish(run_info, step + 1) print "tracking without display finished" # RON - back tracking is optional if track_backward: ptv.py_trackback_c() print "tracking backwards is finished"
def test_tracking_run_object(self): """The TrackingRun object has access to needed attributes""" shutil.copytree("after_sequencing/", "res/") for fname in glob.iglob("after_sequencing_targets/*"): shutil.copy(fname, "scene83_event1/") run_info = py_trackcorr_init() first, last = run_info.get_sequence_range() self.failUnlessEqual(first, 497) self.failUnlessEqual(last, 597)
def sequence_tracking(n_img): # get following variables from the parameters: # n_camera, seq_first, seq_last, base_name import ptv1 as ptv sequenceParams = par.SequenceParams(n_img, path=par.temp_path) sequenceParams.read() (base_name, seq_first, seq_last) = ( sequenceParams.base_name, sequenceParams.first, sequenceParams.last) print ("Starting sequence action") ptv.py_sequence_init(0) stepshake = ptv.py_get_from_sequence_init() if not stepshake: stepshake = 1 print stepshake temp_img = np.array([], dtype=np.ubyte) for i in range(seq_first, seq_last + 1, stepshake): if i < 10: seq_ch = "%01d" % i elif i < 100: seq_ch = "%02d" % i else: seq_ch = "%03d" % i for j in range(n_img): img_name = base_name[j] + seq_ch print ("Setting image: ", img_name) try: temp_img = imread(img_name).astype(np.ubyte) except: print "Error reading file" ptv.py_set_img(temp_img, j) ptv.py_sequence_loop(0, i) # forward tracking run_info = ptv.py_trackcorr_init() print run_info.get_sequence_range() for step in range(*run_info.get_sequence_range()): print step ptv.py_trackcorr_loop(run_info, step, display=0) ptv.py_trackcorr_finish(run_info, step + 1) print "tracking without display finished" # RON - cancled back tracking due to bug ptv.py_trackback_c() print "tracking backwards is finished"
def test_tracking(self): """Tracking reproduces sample results""" shutil.copytree("after_sequencing/", "res/") for fname in glob.iglob("after_sequencing_targets/*"): shutil.copy(fname, "scene83_event1/") py_init_proc_c() py_start_proc_c() run_info = py_trackcorr_init() for frame in range(497, 597): py_trackcorr_loop(run_info, frame, display=0) py_trackcorr_finish(run_info, 597) self.failUnless(compare_directories("res/", "after_tracking/")) self.failUnless(compare_directories( "scene83_event1/", "after_tracking_targets/", mask=re.compile("_targets$")))
def run(self): print "tracking with display thread started" run_info = ptv.py_trackcorr_init() #init the relevant C function for step in range(*run_info.get_sequence_range()): #Loop over each step in sequence self.track_step=step #Call C function to process current step and store results for plotting self.intx0, self.intx1, self.intx2, self.inty0, self.inty1, \ self.inty2, self.pnr1, self.pnr2, self.pnr3, self.m_tr = \ ptv.py_trackcorr_loop(run_info, step, display=1) self.can_continue=False GUI.invoke_later(setattr, main_gui, 'update_thread_plot', True) #invoke plotting when system is ready to process it while not self.can_continue: # wait while plotting of the current step is finished, then continue for the next step pass del self.intx0,self.intx1 ptv.py_trackcorr_finish(run_info, step + 1) # call finishing C function (after all the steps in the loop are processed) for i in range(len(main_gui.camera_list)): # refresh cameras main_gui.camera_list[i]._plot.request_redraw() print "tracking with display thread finished"