2017-03-21 2 views
0

J'utilise l'exemple pour la soustraction d'arrière-plan. Cela fonctionne bien mais la sortie vidéo est illisible. Ma vidéo est en en gris donc c'est peut-être la raison pour laquelle j'ai ce problème. Je ne pouvais pas trouver beaucoup d'informations comment travailler avec VideoWriter_fourcc & VideoWriter différents paramètres. Je sais que la vidéo est 256x320 uint8.Impossible de lire la sortie vidéo

import numpy as np 
import cv2 

#MOG2 Backgroundsubstrator 
cap = cv2.VideoCapture('videotest.avi') 

fgbg = cv2.createBackgroundSubtractorMOG2() 
## 
# Define the codec and create VideoWriter object 
fourcc = cv2.VideoWriter_fourcc(*'XVID') 
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (256,320)) 
## 
while(cap.isOpened()): 
    ret, frame = cap.read() 
    fgmask = fgbg.apply(frame) 

    if ret==True: 
     cv2.imshow('frame',fgmask) 
     out.write(fgmask) 
     k = cv2.waitKey(30) & 0xff 
     if k == 27: 
      break 
    else: 
     break 

cap.release() 
out.release() 
cv2.destroyAllWindows() 

Répondre

0

utilisant:

fourcc = cv2.VideoWriter_fourcc(*'XVID') 

Works si vous écrivez la vidéo comme il est. Dans ce cas, j'essaye d'écrire la vidéo avec une soustraction d'arrière-plan. Le correctif est:

fourcc = cv2.VideoWriter_fourcc(*'DIB ') 

Remarque: Ne pas oublier l'espace après DIB. J'utilise Python 3.5 & OpenCV3.1