def setUp(self): self.input_tracking_par_file_name = "testing_fodder/tracking_parameters/track.par" # create an instance of TrackingParams class # testing setters that are used in constructor self.track_obj1 = TrackingParams( accel_lim=1.1, angle_lim=2.2, add_particle=1, velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
def test_comparison(self): # create two identical objects self.track_obj2 = TrackingParams( accel_lim=1.1, angle_lim=2.2, add_particle=1, velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]]) self.failUnless(self.track_obj2 == self.track_obj1) self.failIf(self.track_obj2 != self.track_obj1) # change one instance variable of track_obj2 and check that the comparisons results are inverted # please note that the operands '==' and '!=' must be checked separately self.track_obj2.set_dvxmin(999.999) self.failUnless(self.track_obj2 != self.track_obj1) self.failIf(self.track_obj2 == self.track_obj1)
def setUp(self): self.input_tracking_par_file_name = b"testing_fodder/tracking_parameters/track.par" # create an instance of TrackingParams class # testing setters that are used in constructor self.track_obj1 = TrackingParams( accel_lim=1.1, angle_lim=2.2, add_particle=1, velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
def setUp(self): self.input_tracking_par_file_name = "testing_fodder/tracking_parameters/track.par" self.output_directory = "testing_fodder/tracking_parameters/testing_output" # create a temporary output directory (will be deleted by the end of test) if not os.path.exists(self.output_directory): os.makedirs(self.output_directory) # create an instance of TrackingParams class # testing setters that are used in constructor self.track_obj1 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13)
def test_comparison(self): # create two identical objects self.track_obj2 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13) self.track_obj3 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13) self.failUnless(self.track_obj2 == self.track_obj3) self.failIf(self.track_obj2 != self.track_obj3) # change one instance variable of track_obj2 and check that the comparisons results are inverted # please note that the operands '==' and '!=' must be checked separately self.track_obj2.set_dvxmin(999.999) self.failUnless(self.track_obj2 != self.track_obj3) self.failIf(self.track_obj2 == self.track_obj3)
def py_start_proc_c(n_cams): """ Read parameters """ # Control parameters cpar = ControlParams(n_cams) cpar.read_control_par(b'parameters/ptv.par') # Sequence parameters spar = SequenceParams(num_cams=n_cams) spar.read_sequence_par(b'parameters/sequence.par', n_cams) # Volume parameters vpar = VolumeParams() vpar.read_volume_par(b'parameters/criteria.par') # Tracking parameters track_par = TrackingParams() track_par.read_track_par(b'parameters/track.par') # Target parameters tpar = TargetParams(n_cams) tpar.read(b'parameters/targ_rec.par') # Examine parameters, multiplane (single plane vs combined calibration) epar = par.ExamineParams() epar.read() # Calibration parameters cals = [] for i_cam in range(n_cams): cal = Calibration() tmp = cpar.get_cal_img_base_name(i_cam) cal.from_file(tmp + b'.ori', tmp + b'.addpar') cals.append(cal) return cpar, spar, vpar, track_par, tpar, cals, epar
def setUp(self): with open("testing_fodder/track/conf.yaml") as f: yaml_conf = yaml.load(f) seq_cfg = yaml_conf['sequence'] cals = [] img_base = [] for cix, cam_spec in enumerate(yaml_conf['cameras']): cam_spec.setdefault('addpar_file', None) cal = Calibration() cal.from_file(cam_spec['ori_file'], cam_spec['addpar_file']) cals.append(cal) img_base.append(seq_cfg['targets_template'].format(cam=cix + 1)) cpar = ControlParams(len(yaml_conf['cameras']), **yaml_conf['scene']) vpar = VolumeParams(**yaml_conf['correspondences']) tpar = TrackingParams(**yaml_conf['tracking']) spar = SequenceParams(image_base=img_base, frame_range=(seq_cfg['first'], seq_cfg['last'])) self.tracker = Tracker(cpar, vpar, tpar, spar, cals, framebuf_naming)
class Test_TrackingParams(unittest.TestCase): def setUp(self): self.input_tracking_par_file_name = "testing_fodder/tracking_parameters/track.par" # create an instance of TrackingParams class # testing setters that are used in constructor self.track_obj1 = TrackingParams( accel_lim=1.1, angle_lim=2.2, add_particle=1, velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]]) # Testing getters according to the values passed in setUp def test_TrackingParams_getters(self): self.failUnless(self.track_obj1.get_dacc() == 1.1) self.failUnless(self.track_obj1.get_dangle() == 2.2) self.failUnless(self.track_obj1.get_dvxmin() == 3.3) self.failUnless(self.track_obj1.get_dvxmax() == 4.4) self.failUnless(self.track_obj1.get_dvymin() == 5.5) self.failUnless(self.track_obj1.get_dvymax() == 6.6) self.failUnless(self.track_obj1.get_dvzmin() == 7.7) self.failUnless(self.track_obj1.get_dvzmax() == 8.8) self.failUnless(self.track_obj1.get_add() == 1) def test_TrackingParams_read_from_file(self): """Filling a TrackingParams object by reading file""" # read tracking parameters from file self.track_obj1.read_track_par(self.input_tracking_par_file_name) # check that the values of track_obj1 are equal to values in tracking parameters file # the check is performed according to the order the parameters were read from same file track_file = open(self.input_tracking_par_file_name, 'r') self.failUnless(self.track_obj1.get_dvxmin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvxmax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvymin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvymax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvzmin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvzmax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dangle() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dacc() == float(track_file.readline())) self.failUnless(self.track_obj1.get_add() == int(track_file.readline())) self.failUnless(self.track_obj1.get_dsumg() == 0) self.failUnless(self.track_obj1.get_dn() == 0) self.failUnless(self.track_obj1.get_dnx() == 0) self.failUnless(self.track_obj1.get_dny() == 0) def test_comparison(self): # create two identical objects self.track_obj2 = TrackingParams( accel_lim=1.1, angle_lim=2.2, add_particle=1, velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]]) self.failUnless(self.track_obj2 == self.track_obj1) self.failIf(self.track_obj2 != self.track_obj1) # change one instance variable of track_obj2 and check that the comparisons results are inverted # please note that the operands '==' and '!=' must be checked separately self.track_obj2.set_dvxmin(999.999) self.failUnless(self.track_obj2 != self.track_obj1) self.failIf(self.track_obj2 == self.track_obj1)
def run_batch(new_seq_first, new_seq_last): """ this file runs inside exp_path, so the other names are prescribed by the OpenPTV type of a folder: /parameters /img /cal /res """ # read the number of cameras with open('parameters/ptv.par', 'r') as f: n_cams = int(f.readline()) # Control parameters cpar = ControlParams(n_cams) cpar.read_control_par(b'parameters/ptv.par') # Sequence parameters spar = SequenceParams(num_cams=n_cams) spar.read_sequence_par(b'parameters/sequence.par', n_cams) spar.set_first(new_seq_first) spar.set_last(new_seq_last) # Volume parameters vpar = VolumeParams() vpar.read_volume_par(b'parameters/criteria.par') # Tracking parameters track_par = TrackingParams() track_par.read_track_par(b'parameters/track.par') # Target parameters tpar = TargetParams() tpar.read(b'parameters/targ_rec.par') # # Calibration parameters cals = [] for i_cam in range(n_cams): cal = Calibration() tmp = cpar.get_cal_img_base_name(i_cam) cal.from_file(tmp + b'.ori', tmp + b'.addpar') cals.append(cal) # sequence loop for all frames for frame in range(new_seq_first, new_seq_last + 1): print("processing frame %d" % frame) detections = [] corrected = [] for i_cam in range(n_cams): imname = spar.get_img_base_name(i_cam) + str(frame) img = imread(imname) hp = simple_highpass(img, cpar) targs = target_recognition(hp, tpar, i_cam, cpar) print(targs) targs.sort_y() detections.append(targs) mc = MatchedCoords(targs, cpar, cals[i_cam]) pos, pnr = mc.as_arrays() print(i_cam) corrected.append(mc) # if any([len(det) == 0 for det in detections]): # return False # Corresp. + positions. sorted_pos, sorted_corresp, num_targs = correspondences( detections, corrected, cals, vpar, cpar) # Save targets only after they've been modified: for i_cam in xrange(n_cams): detections[i_cam].write(spar.get_img_base_name(i_cam), frame) print("Frame " + str(frame) + " had " \ + repr([s.shape[1] for s in sorted_pos]) + " correspondences.") # Distinction between quad/trip irrelevant here. sorted_pos = np.concatenate(sorted_pos, axis=1) sorted_corresp = np.concatenate(sorted_corresp, axis=1) flat = np.array([corrected[i].get_by_pnrs(sorted_corresp[i]) \ for i in xrange(len(cals))]) pos, rcm = point_positions(flat.transpose(1, 0, 2), cpar, cals, vpar) if len(cals) < 4: print_corresp = -1 * np.ones((4, sorted_corresp.shape[1])) print_corresp[:len(cals), :] = sorted_corresp else: print_corresp = sorted_corresp # Save rt_is rt_is = open(default_naming['corres'] + '.' + str(frame), 'w') rt_is.write(str(pos.shape[0]) + '\n') for pix, pt in enumerate(pos): pt_args = (pix + 1, ) + tuple(pt) + tuple(print_corresp[:, pix]) rt_is.write("%4d %9.3f %9.3f %9.3f %4d %4d %4d %4d\n" % pt_args) rt_is.close() # end of a sequence loop tracker = Tracker(cpar, vpar, track_par, spar, cals, default_naming) tracker.full_forward()
class Test_TrackingParams(unittest.TestCase): def setUp(self): self.input_tracking_par_file_name = "testing_fodder/tracking_parameters/track.par" self.output_directory = "testing_fodder/tracking_parameters/testing_output" # create a temporary output directory (will be deleted by the end of test) if not os.path.exists(self.output_directory): os.makedirs(self.output_directory) # create an instance of TrackingParams class # testing setters that are used in constructor self.track_obj1 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13) # Testing getters according to the values passed in setUp def test_TrackingParams_getters(self): self.failUnless(self.track_obj1.get_dacc() == 1.1) self.failUnless(self.track_obj1.get_dangle() == 2.2) self.failUnless(self.track_obj1.get_dvxmax() == 3.3) self.failUnless(self.track_obj1.get_dvxmin() == 4.4) self.failUnless(self.track_obj1.get_dvymax() == 5.5) self.failUnless(self.track_obj1.get_dvymin() == 6.6) self.failUnless(self.track_obj1.get_dvzmax() == 7.7) self.failUnless(self.track_obj1.get_dvzmin() == 8.8) self.failUnless(self.track_obj1.get_dsumg() == 9) self.failUnless(self.track_obj1.get_dn() == 10) self.failUnless(self.track_obj1.get_dnx() == 11) self.failUnless(self.track_obj1.get_dny() == 12) self.failUnless(self.track_obj1.get_add() == 13) def test_TrackingParams_read_from_file(self): """Filling a TrackingParams object by reading file""" # read tracking parameters from file self.track_obj1.read_track_par(self.input_tracking_par_file_name) # check that the values of track_obj1 are equal to values in tracking parameters file # the check is performed according to the order the parameters were read from same file track_file = open(self.input_tracking_par_file_name, 'r') self.failUnless(self.track_obj1.get_dvxmin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvxmax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvymin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvymax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvzmin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvzmax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dangle() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dacc() == float(track_file.readline())) self.failUnless(self.track_obj1.get_add() == int(track_file.readline())) self.failUnless(self.track_obj1.get_dsumg() == 0) self.failUnless(self.track_obj1.get_dn() == 0) self.failUnless(self.track_obj1.get_dnx() == 0) self.failUnless(self.track_obj1.get_dny() == 0) def test_comparison(self): # create two identical objects self.track_obj2 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13) self.track_obj3 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13) self.failUnless(self.track_obj2 == self.track_obj3) self.failIf(self.track_obj2 != self.track_obj3) # change one instance variable of track_obj2 and check that the comparisons results are inverted # please note that the operands '==' and '!=' must be checked separately self.track_obj2.set_dvxmin(999.999) self.failUnless(self.track_obj2 != self.track_obj3) self.failIf(self.track_obj2 == self.track_obj3) def tearDown(self): # remove the testing output directory and its files shutil.rmtree(self.output_directory)
class Test_TrackingParams(unittest.TestCase): def setUp(self): self.input_tracking_par_file_name = b"testing_fodder/tracking_parameters/track.par" # create an instance of TrackingParams class # testing setters that are used in constructor self.track_obj1 = TrackingParams( accel_lim=1.1, angle_lim=2.2, add_particle=1, velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]]) # Testing getters according to the values passed in setUp def test_TrackingParams_getters(self): self.failUnless(self.track_obj1.get_dacc() == 1.1) self.failUnless(self.track_obj1.get_dangle() == 2.2) self.failUnless(self.track_obj1.get_dvxmin() == 3.3) self.failUnless(self.track_obj1.get_dvxmax() == 4.4) self.failUnless(self.track_obj1.get_dvymin() == 5.5) self.failUnless(self.track_obj1.get_dvymax() == 6.6) self.failUnless(self.track_obj1.get_dvzmin() == 7.7) self.failUnless(self.track_obj1.get_dvzmax() == 8.8) self.failUnless(self.track_obj1.get_add() == 1) def test_TrackingParams_read_from_file(self): """Filling a TrackingParams object by reading file""" # read tracking parameters from file self.track_obj1.read_track_par(self.input_tracking_par_file_name) # check that the values of track_obj1 are equal to values in tracking parameters file # the check is performed according to the order the parameters were read from same file track_file = open(self.input_tracking_par_file_name, 'r') self.failUnless(self.track_obj1.get_dvxmin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvxmax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvymin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvymax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvzmin() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dvzmax() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dangle() == float(track_file.readline())) self.failUnless(self.track_obj1.get_dacc() == float(track_file.readline())) self.failUnless(self.track_obj1.get_add() == int(track_file.readline())) self.failUnless(self.track_obj1.get_dsumg() == 0) self.failUnless(self.track_obj1.get_dn() == 0) self.failUnless(self.track_obj1.get_dnx() == 0) self.failUnless(self.track_obj1.get_dny() == 0) def test_comparison(self): # create two identical objects self.track_obj2 = TrackingParams( accel_lim=1.1, angle_lim=2.2, add_particle=1, velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]]) self.failUnless(self.track_obj2 == self.track_obj1) self.failIf(self.track_obj2 != self.track_obj1) # change one instance variable of track_obj2 and check that the comparisons results are inverted # please note that the operands '==' and '!=' must be checked separately self.track_obj2.set_dvxmin(999.999) self.failUnless(self.track_obj2 != self.track_obj1) self.failIf(self.track_obj2 == self.track_obj1)