30 lines
869 B
Python
30 lines
869 B
Python
import cv2
|
|
import numpy as np
|
|
|
|
def moyenne_image(video, nbr):
|
|
cap=cv2.VideoCapture(video)
|
|
tab_image=[]
|
|
for f in range(nbr):
|
|
ret, frame=cap.read()
|
|
if ret is False:
|
|
break
|
|
image=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
|
tab_image.append(image)
|
|
tab_image=np.array(tab_image)
|
|
cap.release()
|
|
return np.mean(tab_image, axis=0)
|
|
|
|
def calcul_mask(image, fond, seuil):
|
|
image=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
|
|
height, width=image.shape
|
|
mask=np.zeros([height, width], np.uint8)
|
|
image=image.astype(np.int32)
|
|
for y in range(height):
|
|
for x in range(width):
|
|
if abs(fond[y][x]-image[y][x])>seuil:
|
|
mask[y][x]=255
|
|
kernel=np.ones((5, 5), np.uint8)
|
|
mask=cv2.erode(mask, kernel, iterations=1)
|
|
mask=cv2.dilate(mask, kernel, iterations=3)
|
|
return mask
|