Цель:
• Декодировать кадры → применить фиксированную маску → закрасить замаскированную область → перекодировать видео
• Сохранять стабильность вывода между кадрами (избегать мерцания)
• Предпочитать достаточно быстрое решение для пакетной обработки обработка
Вводная информация/информация о водяных знаках
• Ввод: H.264 MP4, 1080p, 30 кадров в секунду, продолжительность ~10 с
• Область водяного знака (фиксированная): x=1600, y=900, w=280, h=120 (пример)
• Логотип в основном непрозрачен, иногда с полупрозрачные края
Что я пробовал
Я использовал FFmpeg для извлечения кадров, затем OpenCV для покадровой зарисовки.
Извлечение кадров FFmpeg:
Код: Выделить всё
ffmpeg -i input.mp4 -vsync 0 frames/%06d.png
Код: Выделить всё
import cv2
import numpy as np
x, y, w, h = 1600, 900, 280, 120
img = cv2.imread("frames/000001.png")
mask = np.zeros(img.shape[:2], dtype=np.uint8)
mask[y:y+h, x:x+w] = 255
result = cv2.inpaint(img, mask, 3, cv2.INPAINT_TELEA)
cv2.imwrite("out/000001.png", result)
Код: Выделить всё
ffmpeg -framerate 30 -i out/%06d.png -c:v libx264 -pix_fmt yuv420p output.mp4
Покадровая зарисовка работает «нормально» на отдельных изображениях, но в видео закрашенная область мерцает, поскольку реконструкция немного меняется в зависимости от кадра (особенно по краям/текстурам).
Вопросы
1. Какой подход к уменьшению мерцания рекомендуется использовать для удаления логотипа фиксированной области?
• Существует ли известный метод распространения реконструкции во времени (например, управление оптическим потоком, временное сглаживание)?
2. При использовании только OpenCV: какой минимальный инженерный подход (без обучения модели) обеспечивает согласованность результатов?
• Пример: следует ли мне рисовать на ключевом кадре, а затем отслеживать/деформировать патч с помощью оптического потока?
3. Есть ли собственный способ сделать это с помощью FFmpeg лучше, чем извлечение кадров (например, delogo + что-то еще), или OpenCV — правильный путь?
Меня устраивает практический ответ, даже если он не идеален, если он стабилен и достаточно быстр.
Подробнее здесь: https://stackoverflow.com/questions/798 ... peg-opencv
Мобильная версия