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