Obtenir des images à partir de VideoCapture opencv en python
J'ai le code suivant, qui ne cesse d'extrait toutes les images à partir d'une vidéo à l'aide de VideoCapture bibliothèque opencv en python:
import cv2
def frame_capture:
cap = cv2.VideoCapture("video.mp4")
while not cap.isOpened():
cap = cv2.VideoCapture("video.mp4")
cv2.waitKey(1000)
print "Wait for the header"
pos_frame = cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
while True:
flag, frame = cap.read()
if flag:
# The frame is ready and already captured
cv2.imshow('video', frame)
pos_frame = cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
print str(pos_frame)+" frames"
else:
# The next frame is not ready, so we try to read it again
cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, pos_frame-1)
print "frame is not ready"
# It is better to wait for a while for the next frame to be ready
cv2.waitKey(1000)
if cv2.waitKey(10) == 27:
break
if cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES) == cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT):
# If the number of captured frames is equal to the total number of frames,
# we stop
break
Mais j'ai envie de prendre une image spécifique dans un timestamp dans la vidéo.
Comment puis-je y parvenir?
réglez la position à l'aide
Pourriez-vous donner un petit exemple? 🙂
pas en Python, je ne pourrais pas le tester 😀
Je présume qu'il serait semblable à: image = cap.get(CV_CAP_PROP_POS_MSEC(10)). Même si cela peut être problème plus difficile à résoudre que ceci
il devrait être plus comme
CV_CAP_PROP_POS_MSEC
, puis attraper le cadrePourriez-vous donner un petit exemple? 🙂
pas en Python, je ne pourrais pas le tester 😀
Je présume qu'il serait semblable à: image = cap.get(CV_CAP_PROP_POS_MSEC(10)). Même si cela peut être problème plus difficile à résoudre que ceci
il devrait être plus comme
cap.set(CV_CAP_PROP_POS_MSEC, 123) frame = cap.read()
. Si set
fonctionne correctement comme vous l'avez mentionnéOriginalL'auteur yusuf | 2015-11-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la fonction set() de VideoCapture.
Vous pouvez calculer le nombre total de trames:
Ici 7 est le prop-Id. Vous pouvez trouver plus ici http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html
Après cela, vous pouvez définir le nombre d'images, supposons que je veux extraire 100e cadre
7
est la valeur ordinale deCV_CAP_PROP_FRAME_COUNT
et que1
est la valeur ordinale deCV_CAP_PROP_POS_FRAMES
- ce que vous êtes en train de faire ici, c'est que vous êtes en train de déplacer le "cadre " lecteur" à l'offset de la 100e édition de la trame, puis vous lisez le "prochain", c'est la 101st cadreOriginalL'auteur abhishek