Dernière fois a présenté comment collecter des images candidates à l'aide de l'API Bing Image Search. Cette fois, je vais vous présenter comment analyser et collecter des vidéos par analyse d'images.
La vidéo est essentiellement le même mécanisme que le dessin animé para-para, et le mouvement est exprimé en changeant l'image fixe dans un court laps de temps. À ce stade, l'image fixe qui compose la vidéo est l'image d'image, et le nombre d'images d'image par unité de temps qui compose la vidéo est Elle s'appelle la fréquence d'images et est exprimée en unités de fps (combien d'images d'images sont utilisées par seconde).
En d'autres termes, si vous extrayez l'image de cadre de la scène où le visage est reflété de la vidéo, vous pouvez sécuriser certaines images candidates même de la vidéo avec la courte scène. En outre, de nombreuses vidéos telles que des DVD sont prises avec le visage du sujet regardant l'appareil photo, et beaucoup d'entre elles sont également appropriées pour corriger la quantité de lumière. L'un des avantages est qu'il existe une forte possibilité qu'une image de visage appropriée pour l'apprentissage puisse être extraite des images candidates extraites de la vidéo.
Cette fois, j'aimerais extraire une image cadre qui est une image candidate de la vidéo en utilisant OpenCV que j'ai utilisé la dernière fois.
Cette fois, je vais capturer la vidéo à l'aide de l'outil gratuit QuickTime Player.
Vous pouvez trouver peu pratique de capturer la vidéo, mais la vidéo au format .mov capturée et sortie par QuickTime Player a l'avantage que le fichier peut être lu sans problème avec OpenCV. (Si vous avez déjà une vidéo qui peut être lue par OpenCV, ignorez cette étape.)
De plus, lors de l'extraction de toutes les images d'image à partir de vidéos de longue durée telles que des DVD, le nombre est énorme et le visage peut ne pas être correctement reflété dans toutes les images d'image. Par conséquent, en capturant partiellement la scène vidéo dans laquelle le visage est réfléchi à partir de la vidéo, le but est d'extraire efficacement l'image de trame dans laquelle le visage est réfléchi. De plus, si cette méthode est utilisée, les images candidates peuvent être extraites d'images animées publiées sur le Web.
※※※ Mise en garde ※※※ ** La vidéo capturée cette fois est destinée à être utilisée dans l'apprentissage automatique. ** ** ** Veuillez ne pas redistribuer les vidéos capturées. ** ** ** De plus, lors de la capture de vidéos, etc. publiées sur le Web ** ** Veuillez ne pas toucher aux termes et conditions de chaque site vidéo où la vidéo est publiée! ** **
En ce qui concerne la méthode de capture, des explications détaillées sont publiées dans «Enregistrement de l'écran» du Site officiel. Je vais omettre l'explication ici. Si vous devez télécharger et installer QuickTime Player, veuillez vous rendre sur ici. Il n'y a pas de son dans la vidéo capturée, mais cette fois il n'y a pas de problème car aucun son n'est nécessaire.
Après avoir généré la vidéo capturée, extrayez-en l'image de trame qui est une image candidate. Voici un exemple de code qui extrait une image de cadre et l'enregistre en tant qu'image candidate.
# -*- coding: utf-8 -*-
import cv2
def movie_to_image(num_cut):
video_path = '/hoge/hoge.mov' #Chemin de la vidéo capturée (y compris le nom du fichier)
output_path = '/hoge/save/' #Chemin du dossier vers la sortie
#Lire la vidéo capturée (générer la structure de capture)
capture = cv2.VideoCapture(video_path)
img_count = 0 #Nombre d'images de candidats enregistrées
frame_count = 0 #Nombre d'images de cadre chargées
#Boucle tant qu'il y a une image cadre
while(capture.isOpened()):
#Obtenez une image de cadre
ret, frame = capture.read()
if ret == False:
break
#Enregistre le nombre spécifié d'images de cadre en les éclaircissant
if frame_count % num_cut == 0:
img_file_name = output_path + str(img_count) + ".jpg "
cv2.imwrite(img_file_name, frame)
img_count += 1
frame_count += 1
#Structure de capture ouverte
capture.release()
if __name__ == '__main__':
#Extraction d'image de cadre avec le nombre d'amincissement défini sur 10
movie_to_image(int(10))
Le nombre pour éclaircir l'image du cadre est donné comme argument à la méthode movie_to_image
.
Comme expliqué ci-dessus, dans le cas d'une vidéo de longue durée, si vous enregistrez toutes les images de trame comme images candidates, le nombre sera énorme.
En outre, si le mouvement dans la vidéo est extrêmement lent, il générera plusieurs images de cadre de visage avec presque la même composition.
Dans certains cas, vous pouvez ne pas l'aimer.
En réduisant dans une certaine mesure les images de cadre à y enregistrer, ces problèmes sont résolus.
Par conséquent, dans le cas d'une vidéo avec une fréquence d'images de 29,97 ips, Si vous définissez le nombre d'éclaircie sur "30", vous pouvez obtenir environ une image à 1 seconde d'intervalle dans la vidéo.
Dans le code ci-dessus, une image candidate a été générée à partir du fichier vidéo capturé, mais avec un léger changement dans ce code Vous pouvez également générer des images candidates en temps réel lors de la prise de vue d'une vidéo avec une caméra Web ou autre.
Par exemple, pour utiliser l'appareil photo intégré de série avec le MacBook Air, Tout ce que vous avez à faire est de modifier le code ci-dessus comme suit.
#capture = cv2.VideoCapture(video_path)
#Donnez le numéro de l'appareil photo
capture = cv2.VideoCapture(0)
Vous pouvez également utiliser une caméra Web connectée via USB, mais selon la caméra, l'appareil peut ne pas être reconnu et vous ne pourrez peut-être pas l'utiliser.
De plus, s'il n'y a pas de spécifications de la machine dans une certaine mesure, le traitement en temps réel pendant la prise de vue peut ne pas être en mesure de rattraper son retard. Le problème a tendance à être plus prononcé, en particulier lors de l'enregistrement du nombre total d'images. Dans ce cas, veuillez le résoudre en ajustant le nombre d'éclaircie. Ce qui précède est simple, mais il s'agissait d'une explication d'un exemple de collecte d'images candidates par analyse d'images d'une vidéo.
Recommended Posts