totallyturtle45/test2
0
1import tensorflow as tf2from tensorflow import keras3from keras import layers4import numpy as np5import tensorflow_addons as tf_addons6import matplotlib.pyplot as plt7import cv28import numpy as np9def convert(video):10 def videotoimg(video_path):11 import cv212 import numpy as np13 14 # Load the AVI video file15 cap = cv2.VideoCapture(video_path)16 17 # Check if the video file was opened successfully18 if not cap.isOpened():19 print("Error: Could not open video file.")20 exit()21 22 # Initialize a list to store frames as Numpy arrays23 video_frames = []24 25 # Read and process each frame of the video26 while True:27 ret, frame = cap.read()28 29 # Break the loop if the video has ended30 if not ret:31 break32 33 # Convert the frame to RGB format (OpenCV reads BGR by default)34 frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)35 36 # Resize the frame to (255, 255)37 resized_frame = cv2.resize(frame_rgb, (256, 256))38 39 # Append the resized frame to the list40 video_frames.append(resized_frame)41 42 # Release the video capture object43 cap.release()44 45 # Now you have a list of Numpy arrays representing the video frames with shape (255, 255, 3)46 47 return(video_frames)48 49 # Define the custom layer class50 51 class ReflectionPadding2D(layers.Layer):52 def __init__(self, padding=(1, 1), **kwargs):53 self.padding = tuple(padding)54 super(ReflectionPadding2D, self).__init__(**kwargs)55 56 def call(self, input_tensor, mask=None):57 padding_width, padding_height = self.padding58 padding_tensor = [59 [0, 0],60 [padding_height, padding_height],61 [padding_width, padding_width],62 [0, 0],63 ]64 return tf.pad(input_tensor, padding_tensor, mode="REFLECT")65 66 def get_config(self):67 config = super().get_config().copy()68 config.update({"padding": self.padding})69 return config70 71 # Register the custom layers72 keras.utils.get_custom_objects().update({73 "ReflectionPadding2D": ReflectionPadding2D,74 "InstanceNormalization": tf_addons.layers.InstanceNormalization75 })76 77 # Load the generator model78 loaded_gen_G = keras.models.load_model("saved_models_monet/ganF_monet.h5", custom_objects={79 "ReflectionPadding2D": ReflectionPadding2D,80 "InstanceNormalization": tf_addons.layers.InstanceNormalization81 }, compile=False)82 83 # Compile the loaded model manually84 loaded_gen_G.compile(loss='mean_squared_error', optimizer='adam')85 86 # Define a function to perform image transformation87 def transform_image(input_image):88 # Preprocess the input image89 input_image = input_image.astype(np.float32)90 input_image = input_image / 255.091 92 # Generate a prediction93 generated_image = loaded_gen_G.predict(np.expand_dims(input_image, axis=0))94 generated_image = (generated_image + 1.0) / 2.095 96 return np.squeeze(generated_image)97 98 # Load and preprocess the test image99 video_frames = videotoimg(video)100 101 print("Number of frames:", len(video_frames))102 # Initialize a list to store transformed frames103 transformed_frames = []104 progress_text = "Operation in progress. Please wait."105 my_bar = st.progress(0)106 point = 0107 progress_container = st.empty()108 for frame in video_frames:109 transformed_frame = transform_image(frame)110 transformed_frames.append(transformed_frame)111 point=point+1112 percent_complete = point / len(video_frames)113 my_bar.progress(percent_complete)114 115 # Display the transformed frames116 for transformed_frame in transformed_frames:117 plt.imshow(transformed_frame)118 plt.axis('off')119 120 121 122 # ... (your import statements)123 124 # Load and preprocess the test image125 video_frames = videotoimg(video)126 127 # Initialize a list to store transformed frames128 transformed_frames = []129 130 # Transform each frame and store the result131 for frame in video_frames:132 transformed_frame = transform_image(frame)133 transformed_frames.append(transformed_frame)134 135 # Get the shape of the frames to determine the video dimensions136 frame_height, frame_width, _ = transformed_frames[0].shape137 138 # Define the codec and create a VideoWriter object139 fourcc = cv2.VideoWriter_fourcc(*'mp4v')140 desktop_path = os.path.expanduser('~/Desktop')141 142 # Set the output video file path143 output_path = os.path.join(desktop_path, 'my_video.mp4')144 145 output_video = cv2.VideoWriter(output_path, fourcc, 30, (frame_width, frame_height))146 # Get the user's desktop directory147 148 149 # Convert and save each transformed frame to the output video150 for transformed_frame in transformed_frames:151 transformed_frame_uint8 = (transformed_frame * 255).astype(np.uint8)152 output_video.write(cv2.cvtColor(transformed_frame_uint8, cv2.COLOR_RGB2BGR)) # Convert to BGR format for saving153 154 # Release the VideoWriter155 output_video.release()156 157 print("Video saved as output_video.mp4")158 159 160import streamlit as st161import os162import streamlit as st163import os164 165def main():166 st.title("ai paint vid")167 st.write("video must be at 24 fps")168 169 uploaded_file = st.file_uploader("Choose a file...", type=["avi"])170 171 if uploaded_file is not None:172 destination_directory = "/Users/keller/Desktop/art_vid/video"173 if not os.path.exists(destination_directory):174 os.makedirs(destination_directory)175 176 st.write("Uploaded file:", uploaded_file.name)177 178 destination_path = os.path.join(destination_directory, uploaded_file.name)179 with open(destination_path, "wb") as destination_file:180 destination_file.write(uploaded_file.read())181 182 st.success("Started")183 convert("video/0001-0051.avi")184 st.success("done")185 186 187 188if __name__ == "__main__":189 main()190 