From 2a80c07498c480c5f34dc36629adad98a6577834 Mon Sep 17 00:00:00 2001 From: LonicaMewinsky <93007558+LonicaMewinsky@users.noreply.github.com> Date: Mon, 13 Nov 2023 15:43:02 -0600 Subject: [PATCH] Delete LoadAnim.py --- LoadAnim.py | 81 ----------------------------------------------------- 1 file changed, 81 deletions(-) delete mode 100644 LoadAnim.py diff --git a/LoadAnim.py b/LoadAnim.py deleted file mode 100644 index 1d9544b..0000000 --- a/LoadAnim.py +++ /dev/null @@ -1,81 +0,0 @@ -import cv2 -import torch -import torchvision.transforms as transforms -import numpy as np -import os - -device = torch.device("cuda" if torch.cuda.is_available() else "cpu") - -class BreakFrames: - def __init__(self): - pass - - @classmethod - def INPUT_TYPES(s): - return { - "required": { - "file_input": ("STRING", { - "multiline": False, - "default": "C:/Videos/video.mp4" - }), - "num_keyframes": ("INT", { - "default": 0, - "min": 0, - "max": 4096, - "step": 1 - }), - }, - } - RETURN_TYPES = ("IMAGE", "IMAGE", "STRING") - RETURN_NAMES = ("Frames","Keyframes", "Keyframe indices") - - FUNCTION = "breakframes" - CATEGORY = "Frames" - - def breakframes(self, file_input, num_keyframes): - if not os.path.exists(file_input): - raise FileNotFoundError(f"File '{file_input} cannot be found.'") - # Open the video file - try: - video_capture = cv2.VideoCapture(file_input) - # Check if the anim was loaded - if not video_capture.isOpened(): - print(f"Error: Could not open video file {file_input}.") - return None - except: - print(f"Error: Could not open video file {file_input}.") - return None - # Read each frame from anim - frame_count = 0 - transformer = transforms.ToTensor() - tensors = [] - while True: - ret, frame = video_capture.read() - if ret: - frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) - tensors.append(transformer(frame).to(device).unsqueeze(0)) - frame_count += 1 - else: - break - video_capture.release() - if num_keyframes > 0: - N = np.clip(num_keyframes, 2, len(tensors)-1) # Save a spot for first frame - differences = [torch.norm(tensors[i+1] - tensors[i], p=2) for i in range(len(tensors)-1)] - _, top_indices = torch.topk(torch.tensor(differences), k=N, largest=True) - keyframe_indices = sorted([index.item() + 1 for index in top_indices]) - keyframe_indices.insert(0, 0) - cat_keyframe_tensors = [tensors[i] for i in keyframe_indices] - cat_keyframe_tensors = torch.cat(cat_keyframe_tensors, dim = 0).permute(0, 2, 3, 1) - else: - cat_keyframe_tensors = None - cat_frame_tensors = torch.cat(tensors, dim = 0).permute(0, 2, 3, 1) - print(str(keyframe_indices)) - return (cat_frame_tensors, cat_keyframe_tensors, str(keyframe_indices)) - -NODE_CLASS_MAPPINGS = { - "BreakFrames": BreakFrames -} - -NODE_DISPLAY_NAME_MAPPINGS = { - "BreakFrames": "BreakFrames" -}