Esempio n. 1
0
    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"
Esempio n. 2
0
	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"
Esempio n. 3
0
    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"
Esempio n. 4
0
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"
Esempio n. 5
0
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"
Esempio n. 6
0
 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$")))
Esempio n. 7
0
    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"