La méthode de différence inter-images est l'une des méthodes de détection d'objets en mouvement. C'est le résultat de la création avec Python3 + OpenCV.
Cliquez ici pour les données originales (C'est difficile à comprendre, mais c'est une vidéo qui donne l'impression d'éclabousser de l'eau sur la plage)
** Cliquez ici pour l'image du masque binarisé **
** Ceci est une vidéo **
** Afficher l'image de fond **
Ensuite, c'est un exemple de programme.
movieSample.py
import cv2
import numpy as np
import time
i = 0 #Variable de comptage
th = 30 #Seuil d'image de différence
#Capture de fichier vidéo
cap = cv2.VideoCapture("/Users/.../.../.../movies/movieSample.mp4")
#Définir la première image comme image d'arrière-plan
ret, bg = cap.read()
#Conversion de l'échelle de gris
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
while(cap.isOpened()):
#Obtenir le cadre
ret, frame = cap.read()
#Conversion de l'échelle de gris
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
#Calculez la valeur absolue de la différence
mask = cv2.absdiff(gray, bg)
#L'image de différence est binarisée et l'image de masque(Monochrome)Calculer
mask[mask < th] = 0
mask[mask >= th] = 255
#Afficher l'image du masque
cv2.imshow("Mask", mask)
#Image du cadre d'affichage (monochrome)
cv2.imshow("Flame", gray)
#Afficher l'image d'arrière-plan (monochrome)
cv2.imshow("Background", bg)
#Attendre(0.03sec)
time.sleep(0.03)
i += 1 #Augmentez le nombre de 1
#Mise à jour de l'image d'arrière-plan (à intervalles réguliers)
if(i > 30):
ret, bg = cap.read()
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
i = 0 #Initialisation de la variable de comptage
#S'arrête à mi-chemin lorsque la touche x est enfoncée
if cv2.waitKey(1) & 0xFF == ord('x'):
break
cap.release()
cv2.destroyAllWindows()
À titre d'essai, OpenCV peut devoir être installé séparément. Veuillez essayer en fonction de l'environnement. Si vous utilisez un Mac, depuis le terminal
$ python3 -m pip install opencv-python [ENTER]
Je pense que je peux y aller.
** K Igarashi ** a introduit l'installation. Installation d'OpenCV avec pip