[PYTHON] Die von OpenCV ausgegebene AVI-Datei kann nicht abgespielt werden

Der Unterschied zwischen den Bildern des mit OpenCV mit Python aufgenommenen Videos wird als Schwarzweißvideo ausgegeben, und die Schwarzweißvideodatei wird generiert, kann jedoch nicht abgespielt werden. Ich habe gesehen, dass das Standard-OpenCV nur unkomprimierte AVI-Dateien abspielen kann, aber ich weiß nicht, wie ich damit umgehen soll. Bitte lassen Sie es mich wissen.

-- 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)

True, wenn der Unterschied unter dem Schwellenwert liegt

mask = diff < th

Generieren Sie ein Array mit der gleichen Größe wie das Hintergrundbild

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

Der wahre Teil (Hintergrund) ist schwarz lackiert

im_mask[mask]=0

Entfernung von Sesamsalzgeräuschen

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()

Berechnung der Differenz zwischen Frames

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)

Ende der Differenz zwischen Frames

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)

True, wenn der Unterschied unter dem Schwellenwert liegt

mask2 = diff2 < th2

Generieren Sie ein Array mit der gleichen Größe wie das Hintergrundbild

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

Der wahre Teil (Hintergrund) ist schwarz lackiert

im_mask2[mask]=0

Entfernung von Sesamsalzgeräuschen

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:

Differenzberechnung der Differenz zwischen Frames

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

Abschluss der Berechnung der Differenz zwischen Frames

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

Wenn die Taste q gedrückt wird

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

if name == 'main': main()

Recommended Posts

Die von OpenCV ausgegebene AVI-Datei kann nicht abgespielt werden
So wechseln Sie die Konfigurationsdatei, die von Python gelesen werden soll
Überprüfen Sie den Dateinamen, wenn Sie durch Python-Import nicht informiert werden
[OpenCV] Über das von imread zurückgegebene Array
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei, indem Sie den Zeichencode angeben.
Lesen Sie das von flask gepostete Bild, damit es von opencv verarbeitet werden kann
Überprüfen Sie den Betrieb von OpenCV3, das von Anaconda installiert wurde
So löschen Sie die von Python ausgegebenen Zeichen
Legen Sie die von django hochgeladene Datei in MinIO ab
Laden Sie die von Google Colaboratory erstellte CSV-Datei herunter
[Django] CSS im Projekt kann nicht gelesen werden
PIL kann nicht von virtualenv mit pyenv installiert werden
Das Problem, dass der Befehl ifconfig nicht verwendet werden kann
[Python] Speichern Sie die von OpenCV importierten Videodaten als JPG-Datei mit Seriennummer
Das vom Modulnamen abgedeckte Material kann am Importziel / der Importquelle nicht korrekt aufgerufen werden.