Ci sono un certo numero di video che sto cercando di elaborare diversi videogiochi per rilevare vari "stati" in essi.
Il primo gioco che sto affrontando è una qualsiasi edizione di Super Street Fighter 4 .
In esso, vorrei rilevare quando viene visualizzata la schermata del personaggio "vs". Ecco un esempio di un fotogramma del video:
(tratto dal segno ~ 10s di questo video )
Se potessi rilevare lo "vs", allora sarei in grado di rilevare che il frame del video è davvero lo schermo "vs", che mi permetterebbe di cercare altre informazioni (per ora, diciamo che lo userò per rilevare il timestamp nel video in cui la partita sta per iniziare).
Detto questo, ecco cosa si può presumere riguardo ai frame dei video che elaborerò (questo non è l'unico video, ci sono migliaia, se non decine o centinaia di migliaia di video, ma il problema della scala nell'elaborazione che molti video è un dominio completamente diverso):
- Preferirei (ma non è necessario) elaborare l'immagine con la risoluzione più bassa possibile con risultati affidabili (risoluzioni inferiori = tempo di elaborazione più veloce). L'immagine sopra è di 480 x 270 pixel (presa da un video di YouTube con un
fmt
18 ) ma possono avere dimensioni diverse (ho ottenuto video di YouTube confmt
18 ma con dimensioni di 640 x 360 pixel). - La maggior parte dei video verrà alimentata direttamente
- La maggior parte dei video avrà proporzioni 16: 9
- Lo sfondo rossastro sarà animato, ma generalmente si trova all'interno di quel colore rosso-arancio (sono le fiamme)
- A volte ci sarà un badge che si dissolve dentro e fuori nella parte inferiore del "vs" per indicare una versione (che sarà importante, ma non adesso), che potrebbe offuscare il "vs", in questo modo:
(tratto dal segno ~ 3s di questo video ; nota anche che quanto sopra ha una risoluzione di 640 x 360 pixel)
- Le dimensioni e la posizione di "vs" saranno all'incirca le stesse (non l'ho ancora verificato ma so che non si muove) in proporzione ad altri video con feed diretto
- I personaggi saranno scelti da un pool di oltre 30 su ciascun lato (in altre parole, le aree del riquadro varieranno)
- I video dureranno generalmente dai due ai quattro minuti, con un numero di fotogrammi compreso tra 4.000 e 6,00. Tuttavia, potrebbero esserci video più lunghi (forse due ore) in cui sono presenti vari altri giochi e azioni live. Questi video non sono così importanti, ma se una soluzione mi dice dove appare un determinato gioco nel video generale più grande, fantastico
- La risoluzione nativa delle acquisizioni è 720p, quindi un'immagine di base del "vs" può essere presa a quella che sarebbe considerata una dimensione "nativa".
In definitiva, sto cercando di codificare questa pipeline in .NET, ma non è molto importante, la dimostrazione del concetto è più importante qui e una comprensione delle tecniche coinvolte in modo da poterlo tradurre e ottimizzare per .NET così come per altri video di altri giochi dello stesso genere (se riesco a individuare i discriminatori significativi e i video di dire, Ultimate Marvel vs. Capcom 3 , Street Fighter x Tekken , BlazBlue: Continuum Shift , ecc.).
Sto anche immergendo le dita dei piedi in Mathematica e ho la versione home 8.0, quindi anche una prova di concetti in quell'ambiente è più che benvenuta.