Należy opracować skrypt (możliwe w Pythonie), który automatycznie wycina klipy z wideo na podstawie podobieństwa do klipów z innego wideo. Skrypt powinien uwzględniać możliwe transformacje klatek (na przykład, przycinanie, skalowanie, rozciąganie) podczas porównywania.
Jak powinien działać: Na wejściu podawane są dwa pliki wideo A i B, A - duży plik z długim wideo, B - krótki plik wideo składający się z wycinków klipów z pliku A. Skrypt powinien znaleźć podobne fragmenty wideo w długim wideo, które są w krótkim, wyciąć je i złożyć w nowe wideo C.
W idealnym rezultacie wideo C powinno być podobne do wideo B, ale zawartość pobrana z pliku A.
Jakość wideo B może różnić się od jakości wideo A, może zawierać logo itp. i być nieznacznie przekształcone (przycięte lub rozciągnięte), dlatego należy przewidzieć możliwość dostosowania progu podobieństwa do określenia podobnych scen.
Jak widzę proces (możesz zaproponować swój):
1. Wydobycie klatek z obu wideo
Wejście: dwa pliki wideo, Wyjście: Zapisane klatki w formatach obrazów (JPEG/PNG) w osobnych katalogach.
2. Porównanie klatek.
(Wejście: Katalogi z wydobywanymi klatkami z obu wideo.
- Proces: Porównywanie klatek za pomocą algorytmów wyrównywania i punktów charakterystycznych (na przykład, ORB) lub własny wariant.
- Uwzględnienie transformacji: Skrypt powinien uwzględniać możliwe przycięcia, skalowania i rozciągania klatek lub własny wariant.
- Próg podobieństwa: Możliwość dostosowania progu podobieństwa do określenia podobnych scen.
- Wyjście: Lista par podobnych klatek z podaniem ich znaczników czasowych.
3. Wycinanie wideo
- Wejście: Oryginalne wideo i lista par podobnych klatek z znacznikami czasowymi.
- Proces: Użycie FFmpeg (lub odpowiednika) do wycinania wyjściowego wideo na podstawie znaczników czasowych podobnych klatek.
- Wyjście: Zapisane klipy wideo.
Wymagania:
Zapisany klip wideo może różnić się od wideo B, ale nie więcej niż o 80%, dla testu dostarczę 3-4 przykłady.
Wymagania technologiczne: jakie są dla Ciebie wygodne, ale wydaje się, że można zastosować:
- Python
- Biblioteki: OpenCV, NumPy, FFmpeg
- Preferowane jest, aby skrypt był wieloplatformowy (Windows, MacOs)