Il y a un certain nombre de vidéos que je cherche à traiter de différents jeux vidéo pour détecter divers "états" en eux.
Le premier jeu auquel je m'attaque est une édition de Super Street Fighter 4 .
Dans celui-ci, je voudrais détecter quand l'écran de caractère "vs" apparaît. Voici un exemple d' une image de la vidéo:
(extrait de la marque ~ 10s de cette vidéo )
Si je pouvais détecter le "vs", je serais alors en mesure de détecter que la trame de la vidéo est bien l'écran "vs", ce qui me permettrait de rechercher d'autres informations (pour l'instant, disons que je vais l'utiliser pour détecter l'horodatage dans la vidéo où le match est sur le point de commencer).
Cela dit, voici ce que l'on peut supposer des images des vidéos que je vais traiter (ce n'est pas la seule vidéo, il y a des milliers, sinon des dizaines ou des centaines de milliers de vidéos, mais la question de l'échelle dans le traitement qui de nombreuses vidéos est un domaine complètement différent):
- Je préférerais (mais ce n'est pas nécessaire) traiter l'image à la résolution la plus basse possible avec des résultats fiables (résolutions plus faibles = temps de traitement plus rapide). L'image ci-dessus est de 480 x 270 pixels (prise à partir d'une vidéo YouTube avec un
fmt
18 ) mais ils peuvent venir de différentes tailles (j'ai des vidéos YouTube avecfmt
18 mais avec des dimensions 640 x 360 pixels). - La plupart des vidéos seront alimentées directement
- La plupart des vidéos seront au format 16: 9
- Le fond rougeâtre sera animé, mais généralement dans cette couleur orange-rouge (ce sont des flammes)
- Parfois, il y aura un badge apparaissant dans la partie inférieure du "vs" pour indiquer une version (qui sera importante, mais pas pour le moment), qui pourrait obscurcir le "vs", comme ceci:
(tiré de la marque ~ 3s de cette vidéo ; notez également que ce qui précède est une résolution de 640 x 360 pixels)
- La taille et la position du "vs" vont être à peu près les mêmes (je n'ai pas encore vérifié cela mais je sais que cela ne bouge pas) proportionnellement aux autres vidéos à alimentation directe
- Les personnages seront choisis dans un pool de plus de 30 de chaque côté (en d'autres termes, ces zones du cadre varieront)
- Les vidéos durent généralement de deux à quatre minutes, avec entre 4 000 et 6 000 images. Cependant, il peut y avoir des vidéos plus longues (peut-être deux heures) avec divers autres jeux et des actions en direct. Ces vidéos ne sont pas aussi importantes, mais si une solution me dit où un certain jeu apparaît dans la vidéo globale plus grande, super
- La résolution native des captures est de 720p, donc une image de base du "vs" peut être prise à ce qui serait considéré comme une taille "native".
En fin de compte, je cherche à coder ce pipeline dans .NET, mais ce n'est pas super important, la preuve de concept est plus importante ici ainsi que la compréhension des techniques impliquées afin que je puisse le traduire et l'optimiser pour .NET ainsi que pour d'autres vidéos d'autres jeux du même genre (si je peux identifier les discriminants importants, et des vidéos de disons, Ultimate Marvel vs Capcom 3 , Street Fighter x Tekken , BlazBlue: Continuum Shift , etc.).
Je plonge également mes orteils dans Mathematica et j'ai la version familiale 8.0, donc une preuve de concept dans cet environnement est également la bienvenue.