kopia lustrzana https://github.com/OpenDroneMap/ODM
				
				
				
			
							rodzic
							
								
									7c9bac672e
								
							
						
					
					
						commit
						19f02a8635
					
				|  | @ -0,0 +1,154 @@ | ||||||
|  | 
 | ||||||
|  | # Define pipeline tasks | ||||||
|  | tasks_dict = { '0': 'resize', | ||||||
|  |                '1': 'opensfm', | ||||||
|  |                '2': 'cmvs', | ||||||
|  |                '3': 'pmvs', | ||||||
|  |                '4': 'odm_meshing', | ||||||
|  |                '5': 'odm_texturing', | ||||||
|  |                '6': 'odm_georeferencing', | ||||||
|  |                '7': 'odm_orthophoto',  | ||||||
|  |                '8': 'zip_results' } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class ODMTaskManager(object): | ||||||
|  | 	"""docstring for ODMTaskManager""" | ||||||
|  | 	def __init__(self): | ||||||
|  | 		self.initial_task_id = 0 | ||||||
|  | 		self.current_task_id = 0 | ||||||
|  | 		self.tasks = self.init_tasks(tasks_dict) | ||||||
|  | 
 | ||||||
|  | 	def init_tasks(self, _tasks_dict): | ||||||
|  | 
 | ||||||
|  | 		# dict to store tasks objects | ||||||
|  | 		tasks = {} | ||||||
|  | 
 | ||||||
|  | 		# loop over tasks dict | ||||||
|  | 		for key, in _tasks_dict: | ||||||
|  | 
 | ||||||
|  | 			# instantiate and append ODMTask | ||||||
|  | 			task_name = _tasks_dict[key] | ||||||
|  | 			tasks[key] = ODMTask(key, task_name) | ||||||
|  | 
 | ||||||
|  | 			# Setup each tasks i/o | ||||||
|  | 
 | ||||||
|  | 			if task_name == 'resize': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 
 | ||||||
|  | 			elif task_name == 'opensfm': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 
 | ||||||
|  | 			elif task_name == 'cmvs': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 
 | ||||||
|  | 			elif task_name == 'pmvs': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 
 | ||||||
|  | 			elif task_name == 'odm_meshing': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 
 | ||||||
|  | 			elif task_name == 'odm_texturing': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 
 | ||||||
|  | 			elif task_name == 'odm_georeferencing': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 
 | ||||||
|  | 			elif task_name == 'odm_orthophoto': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 
 | ||||||
|  | 			elif task_name == 'zip_results': | ||||||
|  | 				# setup this task | ||||||
|  | 				num_inputs = 0 | ||||||
|  | 				num_outputs = 0 | ||||||
|  | 				inputs = {} | ||||||
|  | 				outputs = {} | ||||||
|  | 			else: | ||||||
|  | 				print '[ERROR] task_name  %s is not valid' % task_name | ||||||
|  | 
 | ||||||
|  | 			# setup values | ||||||
|  | 			task = tasks[key] | ||||||
|  | 			task.num_inputs =  num_inputs | ||||||
|  | 			task.num_outputs =  num_outputs | ||||||
|  | 			task.inputs =  inputs | ||||||
|  | 			task.outputs =  outputs | ||||||
|  | 
 | ||||||
|  | 		return tasks | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	def run_tasks(self): | ||||||
|  | 		for id in range(self.initial_task_id, len(self.tasks)): | ||||||
|  | 			# catch task with current id | ||||||
|  | 			task = self.tasks[str(id)] | ||||||
|  | 			# update task tracking | ||||||
|  | 			self.current_task_id = task.id | ||||||
|  | 			# run task | ||||||
|  | 			task.state = task.run() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class ODMTask(object): | ||||||
|  | 	"""docstring for ODMTask""" | ||||||
|  | 	def __init__(self, id, name): | ||||||
|  | 		# task definition | ||||||
|  | 		self.id = id | ||||||
|  | 		self.name = name | ||||||
|  | 
 | ||||||
|  | 		# task i/o | ||||||
|  | 		self.num_inputs  = 0 | ||||||
|  | 		self.num_outputs = 0 | ||||||
|  | 		self.inputs = {} | ||||||
|  | 		self.num_outputs = {} | ||||||
|  | 
 | ||||||
|  | 		# Current task state (0:waiting, 1:running, 2:succeded: 3:failed) | ||||||
|  | 		# By default we set a task in waiting state | ||||||
|  | 		self.state = 0 | ||||||
|  | 
 | ||||||
|  | 	# Launch task | ||||||
|  | 	def run(self): | ||||||
|  | 
 | ||||||
|  | 		print '[INFO] Running task %s %s ' % (self.id, self.name) | ||||||
|  | 
 | ||||||
|  | 		# while doing something | ||||||
|  | 		self.state = 1 | ||||||
|  | 
 | ||||||
|  | 		# if succeeded with current task | ||||||
|  | 		if True: | ||||||
|  | 			self.state = 2 | ||||||
|  | 		else: | ||||||
|  | 			self.state = 3 | ||||||
|  | 
 | ||||||
|  | 		# Return task state | ||||||
|  | 		return self.state | ||||||
|  | 		 | ||||||
|  | 		 | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 edgarriba
						edgarriba