Te traemos la contestación a esta dificultad, o por lo menos eso deseamos. Si presentas dudas coméntalo y sin pensarlo
Solución:
De la documentación de OpenCV:
La función
cv.waitKey([, delay])
espera un key evento infinitamente (cuandodelay <= 0
) o pordelay
milisegundos, cuando es positivo.
Si el FPS es igual a 20, debe esperar 0,05 segundos entre mostrar los cuadros consecutivos. Así que solo pon waitKey(50)
después imshow()
para tener la velocidad deseada para la reproducción.
Por lo que vale, he probado todo tipo de trucos para configurar el tiempo de retraso de cv2.waitKey() y todos han fallado. Lo que he encontrado que funciona es probar algo como:key = cv2.waitKey(1)
dentro de su while(cap.isOpened()) así:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.cv.CV_FOURCC(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
key = cv2.waitKey(1)
frame = cv2.flip(frame,0)
# write the flipped frame
out.write(frame)
cv2.imshow('frame',frame)
if key & 0xFF == ord('q'):
break
else:
break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
Espero que esto ayude a alguien por ahí.
poner waitKey(60)
después imshow()
y se mostrará a velocidad normal.
valoraciones y comentarios
Si te ha resultado de ayuda nuestro artículo, agradeceríamos que lo compartas con el resto programadores y nos ayudes a difundir nuestro contenido.