Fri 29 Nov 2024 04:30:50 PM CET
This commit is contained in:
		
							parent
							
								
									5d925e0308
								
							
						
					
					
						commit
						e691b0dd97
					
				
							
								
								
									
										52
									
								
								src/SimNDT/run_setup/SimulationVideo.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/SimNDT/run_setup/SimulationVideo.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | ||||||
|  | import numpy as np | ||||||
|  | import os | ||||||
|  | import cv2 | ||||||
|  | from datetime import datetime | ||||||
|  | 
 | ||||||
|  | def create_vector_field_video(folder_path, video_path): | ||||||
|  |     """ | ||||||
|  |     Reads all .npy files from the specified folder, separates Vx and Vy arrays, | ||||||
|  |     calculates the net vector field V, and creates a video using the jet colormap. | ||||||
|  | 
 | ||||||
|  |     Parameters: | ||||||
|  |     folder_path (str): Path to the folder containing .npy files. | ||||||
|  |     video_path (str): Path to save the output video. | ||||||
|  |     """ | ||||||
|  |     # Get list of all .npy files in the folder | ||||||
|  |     file_list = [f for f in os.listdir(folder_path) if f.endswith('.npy')] | ||||||
|  |     file_list.sort()  # Ensure files are processed in order | ||||||
|  | 
 | ||||||
|  |     # Initialize lists to hold Vx and Vy arrays | ||||||
|  |     Vx_list = [] | ||||||
|  |     Vy_list = [] | ||||||
|  | 
 | ||||||
|  |     # Load each file and separate Vx and Vy | ||||||
|  |     for file_name in file_list: | ||||||
|  |         file_path = os.path.join(folder_path, file_name) | ||||||
|  |         data = np.load(file_path) | ||||||
|  |         Vx_list.append(data[0]) | ||||||
|  |         Vy_list.append(data[1]) | ||||||
|  | 
 | ||||||
|  |     # Convert lists to numpy arrays | ||||||
|  |     Vx_array = np.array(Vx_list) | ||||||
|  |     Vy_array = np.array(Vy_list) | ||||||
|  | 
 | ||||||
|  |     # Calculate the net vector V | ||||||
|  |     V = np.sqrt(Vx_array**2 + Vy_array**2) | ||||||
|  | 
 | ||||||
|  |     # Create a video from the net vector V | ||||||
|  |     height, width = V.shape[1], V.shape[2] | ||||||
|  |     current_time = datetime.now().strftime("%Y%m%d_%H%M%S") | ||||||
|  |     video_filename = 'output_video_{current_time}.avi'.format(current_time=current_time) | ||||||
|  |     video_path = os.path.join(video_path, video_filename) | ||||||
|  |     fourcc = cv2.VideoWriter_fourcc(*'XVID') | ||||||
|  |     video = cv2.VideoWriter(video_path, fourcc, 1, (width, height), isColor=True) | ||||||
|  | 
 | ||||||
|  |     for i in range(V.shape[0]): | ||||||
|  |         normalized_frame = (V[i] * 255 / np.max(V[i])).astype(np.uint8)  # Normalize and convert to uint8 | ||||||
|  |         colored_frame = cv2.applyColorMap(normalized_frame, cv2.COLORMAP_JET)  # Apply jet colormap | ||||||
|  |         video.write(colored_frame) | ||||||
|  | 
 | ||||||
|  |     video.release() | ||||||
|  |     print("Video saved at:", video_path) | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user