Форум сайта python.su
Здравствуйте.
Нужно получать уникальные кадры (скриншоты) из видео.
Есть ли какое-то решение на Python, чтобы выбирать из видео кадры, которые, например, больше чем на 50% отличаются друг от друга?
Офлайн
Yes! Use OpenCV and SSIM to extract unique frames from a video based on a similarity threshold.
import cv2 import numpy as np from skimage.metrics import structural_similarity as ssim def extract_unique_frames(video_path, output_folder, threshold=0.5): cap = cv2.VideoCapture(video_path) prev_frame = None unique_count = 0 while True: ret, frame = cap.read() if not ret: break gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) if prev_frame is None or ssim(prev_frame, gray_frame) < threshold: cv2.imwrite(f"{output_folder}/frame_{unique_count:04d}.png", frame) unique_count += 1 prev_frame = gray_frame cap.release() print(f"Extracted {unique_count} unique frames.") # Example usage extract_unique_frames("input.mp4", "output_frames", threshold=0.5)
Офлайн