Die Inter-Frame-Differenzmethode ist eine der Methoden zum Erkennen von sich bewegenden Objekten. Dies ist das Ergebnis der Erstellung mit Python3 + OpenCV.
Klicken Sie hier für die Originaldaten (Es ist schwer zu verstehen, aber es ist ein Video, das sich anfühlt, als würde man Wasser auf den Strand spritzen.)
** Klicken Sie hier für das binärisierte Maskenbild **
** Dies ist ein Video **
** Hintergrundbild anzeigen **
Dann ist es ein Beispielprogramm.
movieSample.py
import cv2
import numpy as np
import time
i = 0 #Zählvariable
th = 30 #Differenzbildschwelle
#Video-Dateierfassung
cap = cv2.VideoCapture("/Users/.../.../.../movies/movieSample.mp4")
#Stellen Sie das erste Bild als Hintergrundbild ein
ret, bg = cap.read()
#Graustufenumwandlung
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
while(cap.isOpened()):
#Holen Sie sich Rahmen
ret, frame = cap.read()
#Graustufenumwandlung
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
#Berechnen Sie den absoluten Wert der Differenz
mask = cv2.absdiff(gray, bg)
#Das Differenzbild wird binärisiert und das Maskenbild(Einfarbig)Berechnung
mask[mask < th] = 0
mask[mask >= th] = 255
#Maskenbild anzeigen
cv2.imshow("Mask", mask)
#Rahmenbild anzeigen (monochrom)
cv2.imshow("Flame", gray)
#Hintergrundbild anzeigen (monochrom)
cv2.imshow("Background", bg)
#Warten(0.03sec)
time.sleep(0.03)
i += 1 #Erhöhen Sie die Anzahl um 1
#Aktualisierung des Hintergrundbildes (in regelmäßigen Abständen)
if(i > 30):
ret, bg = cap.read()
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
i = 0 #Initialisierung der Zählvariablen
#Stoppt auf halbem Weg, wenn die x-Taste gedrückt wird
if cv2.waitKey(1) & 0xFF == ord('x'):
break
cap.release()
cv2.destroyAllWindows()
Als Test muss OpenCV möglicherweise separat installiert werden. Bitte versuchen Sie es entsprechend der Umgebung. Wenn Sie einen Mac verwenden, über das Terminal
$ python3 -m pip install opencv-python [ENTER]
Ich denke, ich kann dorthin gehen.
** K Igarashi ** hat die Installation eingeführt. OpenCV mit pip installieren
Recommended Posts