Sto cercando di passare a un fotogramma specifico impostando la proprietà CV_CAP_PROP_POS_FRAMES
e quindi la lettura del frame del tipo:Ottenere i singoli fotogrammi che utilizzano CV_CAP_PROP_POS_FRAMES in cvSetCaptureProperty
cvSetCaptureProperty(input_video, CV_CAP_PROP_POS_FRAMES, current_frame);
frame = cvQueryFrame(input_video);
Il problema che sto affrontando è che, OpenCV 2.1 rendimenti lo stesso frame per i 12 valori consecutivi di current_frame
mentre voglio leggere ogni singolo frame, non solo i fotogrammi chiave. Qualcuno può dirmi cosa c'è che non va?
Ho fatto qualche ricerca e ho scoperto che il problema è causato dall'algoritmo di decompressione.
Gli algoritmi MPEG (inclusi HD, et tutti) non comprimono ciascun frame separatamente, ma salvano un fotogramma chiave di volta in volta, quindi solo le differenze tra l'ultimo fotogramma e i fotogrammi successivi.
Il problema segnalato è causato dal fatto che, quando si seleziona un frame, il decoder (ffmpeg, probabilmente) avanza automaticamente al fotogramma chiave successivo.
Quindi, c'è un modo per aggirare questo? Non voglio solo fotogrammi chiave ma ogni singolo fotogramma.
Non sono stato in grado di trovare alcuna soluzione a questo. quello che sto facendo è evitare OpenCv e svolgere il compito in Matlab che fornisce ogni frame ma a scapito della bassa velocità. qualsiasi soluzione al problema in OpenCv per favore: -/ – Random