Jak pobrać dokładną klatkę z filmu

0

Cześć,
bawię się ostatnio z openCV i zastanawia mnie jak mogę pobrać dokładna klatkę z filmu przy wykorzystaniu openCV.
Na filmiku mamy biegaczy, którzy się scigają i chcę pobrać klatkę, która przedstawia przekroczenie mety przez danego zawodnika.

Przeszukując internet znalazłem jedynie jak pobrać klatki z filmu, a ja bym chciałbym pobrać odpowiednią klatkę.
Jak ktoś zna jakieś materiały pomocne z góry dziękuje.

0

Dla ścisłości... chcesz wykryć w OpenCV moment przekroczenia mety i w tym momencie zapisać klatkę, czy chcesz zapisać screenshot z klatki o konkretnym numerze, który sam wprowadzisz do aplikacji?

0

Jeśli szukasz czegoś gotowego to: http://zulko.github.io/moviepy/index.html , pozwala wyciąć klatke w odpowiedniej sekundzie, kod jest cały na githubie to możesz też zobaczyć jak oni to robią.

0

Chce wykryć w OpenCV moment przekroczenia mety i w tym momencie zapisać klatkę.

0

Aktualnie wczytuję film z OpenCV i zapisuję każdą klatke z niego. Chciałbym zrobić tak, że ustawiam jakąś czerwone kreche na mecie i jezeli zawodnik wbiegl na nią to zapisuję mi klatke.
Kod wyglada tak:

import cv2
import numpy as np
import time



if __name__ == '__main__':
    vidcap = cv2.VideoCapture('video.mkv')
    success,image = vidcap.read()
    count = 0
    success = True
    while success:
        cv2.imwrite("frames/frame%d.jpg" % count, image)    
        success,image = vidcap.read()
        print('Odczyt klatki: ', success)
        count += 1
0

Jeśli chcesz operować na statycznym ujęciu linii mety to można by, dla każdej klatki odczytywać wartości pikseli na których znajduję się ta linia i w momencie gdy część z nich zmieni swoja wartość o jakiś tam threshold (np. znajdzie się tam but/noga/koszulka biegacza) potraktować to jako przekroczenie mety i zapisać klatkę. Oczywiście poprawność tego rozwiązania zależy od wielu czynników - statyczności kamery i tła albo chociaż perspektywy ujęcia.
Jak ujęcie jest dynamiczne (np. filmowane z ręki) to sprawa się komplikuje i tu chyba najskuteczniej byłoby użyć jakiegoś algorytmu ML. Np. segmentacja obrazu w czasie rzeczywistym + detekcja kolizji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1