La sortie du fichier avi par OpenCV ne peut pas être lue

La différence entre les images de la vidéo tournée avec OpenCV en utilisant Python est sortie sous forme de vidéo en noir et blanc, et le fichier vidéo en noir et blanc est généré, mais il ne peut pas être lu. J'ai vu que l'OpenCV par défaut ne peut lire que des fichiers avi non compressés, mais je ne sais pas comment le gérer, alors faites-le moi savoir.

-- codig: utf-8 --

import cv2

import time

import numpy as np

def flame_sub(im1,im2,im3,th,blur):

d1 = cv2.absdiff(im3, im2) d2 = cv2.absdiff(im2, im1) diff = cv2.bitwise_and(d1, d2)

Vrai si la différence est inférieure au seuil

mask = diff < th

Générer un tableau de la même taille que l'image d'arrière-plan

im_mask = np.empty((im1.shape[0],im1.shape[1]),np.uint8) im_mask[:][:]=255

La vraie partie (arrière-plan) est peinte en noir

im_mask[mask]=0

Élimination du bruit du sel de sésame

im_mask = cv2.medianBlur(im_mask,blur) return im_mask

if name == 'main':

cam = cv2.VideoCapture("toukasoku_movie.mp4")

im1 = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY) im2 = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY) im3 = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)

out = cv2.VideoWriter('output_toukasoku.avi',-1, 20.0, (640,480))

while True:

ret,frame = cam.read()

Calcul de la différence entre les trames

im_fs = flame_sub(im1,im2,im3,5,7) im1 = im2 im2 = im3 im3 = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY) out.write(frame) cv2.imshow("Motion Mask2",im_fs)

Fin de différence entre les cadres

if cv2.waitKey(100) & 0xFF == ord('q'): cam.release() out.release() cv2.destroyAllWindows() break

def flame_sub2(im4,im5,im6,th2,blur2):

d3 = cv2.absdiff(im6, im5) d4 = cv2.absdiff(im5, im4) diff2 = cv2.bitwise_and(d3, d4)

Vrai si la différence est inférieure au seuil

mask2 = diff2 < th2

Générer un tableau de la même taille que l'image d'arrière-plan

im_mask2 = np.empty((im4.shape[0],im4.shape[1]),np.uint8) im_mask2[:][:]=255

La vraie partie (arrière-plan) est peinte en noir

im_mask2[mask]=0

Élimination du bruit du sel de sésame

im_mask2 = cv2.medianBlur(im_mask2,blur2) return im_mask2

if name == 'main':

cam2 = cv2.VideoCapture("Frame_detection.MP4") im4 = cv2.cvtColor(cam2.read()[1], cv2.COLOR_RGB2GRAY) im5 = cv2.cvtColor(cam2.read()[1], cv2.COLOR_RGB2GRAY) im6 = cv2.cvtColor(cam2.read()[1], cv2.COLOR_RGB2GRAY)

while True:

Calcul de la différence de la différence entre les trames

cv2.imshow("Motion Mask3",cam2) im4 = im5 im5 = im6 im6 = cv2.cvtColor(cam2.read()[1], cv2.COLOR_RGB2GRAY) key2 = cv2.waitKey(1)

Achèvement du calcul de la différence entre les cadres

if cam == True: frame = cv2.flip(frame,0) out.write(out)

Lorsque la touche q est enfoncée

if cv2.waitKey(100) & 0xFF == ord('q'): cam.release() out.release() cv2.destroyAllWindows() break

if name == 'main': main()

Recommended Posts

La sortie du fichier avi par OpenCV ne peut pas être lue
Comment changer le fichier de configuration pour qu'il soit lu par Python
Vérifiez le nom du fichier si l'importation Python vous dit que vous ne pouvez pas
[OpenCV] À propos du tableau retourné par imread
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Lisez le fichier en spécifiant le code de caractère.
Lisez l'image postée par flask afin qu'elle puisse être manipulée par opencv
Vérifiez le fonctionnement d'OpenCV3 installé par Anaconda
Comment effacer les caractères générés par Python
Mettez le fichier téléchargé par django dans MinIO
Téléchargez le fichier csv créé par Google Colaboratory
[Django] css dans le projet ne peut pas être lu
PIL ne peut pas être installé par virtualenv avec pyenv
Le problème que la commande ifconfig ne peut pas être utilisée
[Python] Enregistrez les données vidéo importées par OpenCV sous forme de fichier jpg de numéro de série
Le matériel couvert par le nom du module ne peut pas être appelé correctement à la destination / source d'importation.