SummerAIse / FrameProcessor /processor /multi_frame.py
Israaabdelghany's picture
add graph
7a3c572
Raw
History Blame Contribute Delete
2.01 kB
# FrameProcessor/processor/multi_frame.py
import sys,os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from typing import List, Dict, Any
from FrameProcessor.processor.single_frame import process_single_frame
from FrameProcessor.utils.io_utils import save_description_to_csv
from FrameProcessor.ocr.describe_direct import describe_frame_directly
def process_frames(frame_paths: List[str]) -> List[Dict[str, Any]]:
"""Process a set of video frames and evaluate their importance."""
results = []
important_frames_count = 0
for i, frame_path in enumerate(frame_paths):
print(f"Processing frame {i + 1}/{len(frame_paths)}: {frame_path}")
try:
result = process_single_frame(frame_path)
results.append(result)
if result["importance"] == "important":
important_frames_count += 1
print(f" Important: {result['reason'][:50]}...")
if "description" not in result or not result["description"]:
print(f" Retrying description for important frame...")
try:
result["description"] = describe_frame_directly(frame_path)
print(f" Description extracted successfully on retry")
except Exception as e:
print(f" Retry failed: {str(e)}")
if "description" in result and result["description"]:
save_description_to_csv(result)
else:
print(f" Not important: {result['reason'][:50]}...")
except Exception as e:
print(f" Error processing frame: {str(e)}")
results.append({
"frame": frame_path,
"path": frame_path,
"importance": "error",
"reason": str(e)
})
print(f"\nFound {important_frames_count} important frames out of {len(frame_paths)}")
return results