MST MBD/SIM 2023-2024 Labs OpenCV-Python : 6 M.
AIT KBIR
# ----------------- Lecture et traitement d’une vidéo -----------------------------------------------
import cv2
def main():
cap = cv2.VideoCapture('../videos/f1.mp4')
if cap.isOpened():
print("Nombre de frames : ", cap.get(cv2.CAP_PROP_FRAME_COUNT))
print("Nombre des frames par seconde : ", cap.get(cv2.CAP_PROP_FPS))
print("Hauteur des frames : ", cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print("Largeur des frames : ", cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print("Durée de la vidéo : ",
int(cap.get(cv2.CAP_PROP_FRAME_COUNT)/cap.get(cv2.CAP_PROP_FPS))," (s)")
else:
print("Erreur d'ouverture")
ret = True
while ret:
ret, frame = cap.read()
if not ret :
break
cv2.imshow("Capture de la camera ", frame)
output = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow("GRIS", output)
# Binariser
output=cv2.Canny(output, 200, 300)
cv2.imshow("CONTOURS", output)
if cv2.waitKey(int(50/cap.get(cv2.CAP_PROP_FPS))) == 27:
break
cv2.destroyAllWindows()
cap.release()
if __name__ == "__main__":
main()
1 FST de Tanger
MST MBD/SIM 2023-2024 Labs OpenCV-Python : 6 M. AIT KBIR
# -------------------- Caméra : lecture et traitement --------------------------------
import cv2
def main():
cap = cv2.VideoCapture(0)
# Fichier de sauvegarde
codec = cv2.VideoWriter_fourcc('W', 'M', 'V', '2')
framerate = 25
resolution = (640, 480)
VideoFileOutput = cv2.VideoWriter('../videos/Output.avi', codec, framerate, resolution)
if cap.isOpened():
ret, frame = cap.read()
else:
ret = False
# Lire une frame chaque 50 ms
while ret:
ret, frame = cap.read()
cv2.imshow("Camera", frame)
gris = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gris", gris)
cnt = cv2.Canny(gris, 200, 240)
cv2.imshow("Contours", cnt)
VideoFileOutput.write(frame)
if cv2.waitKey(40) == 27:
break
cv2.destroyAllWindows()
VideoFileOutput.release()
cap.release()
if __name__ == "__main__":
main()
2 FST de Tanger
MST MBD/SIM 2023-2024 Labs OpenCV-Python : 6 M. AIT KBIR
# --------------------------------- flot optique : suivi des objets ---------------------------
import cv2
cap = cv2.VideoCapture('../videos/f2.mp4')
# Points d'intérêts à suivre
ret, frame = cap.read()
gris1 = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
while(1):
# Parametres : Points d'intérêt
p0 = cv2.goodFeaturesToTrack(gris1, mask = None,
maxCorners=100,qualityLevel=0.3,minDistance=7,blockSize=7)
ret,frame = cap.read(); gris2 = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Calcul du flot optique (lucas et Kanade)
p1, st, err = cv2.calcOpticalFlowPyrLK(gris1, gris2, p0, None, winSize=(15,
15),maxLevel=2,criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03))
# Points détectées
p1ok = p1[st==1]; p0ok = p0[st==1]
# Affichage
for i in range(len(p1ok)):
p0c = (p0ok[i][0], p0ok[i][1])
# point de départ + direction
vd = (int(p0ok[i][0]+5*(p1ok[i][0]-p0ok[i][0])),int(p0ok[i][1]+5*(p1ok[i][1]-p0ok[i][1])))
frame = cv2.line(frame,p0c,vd, (0,0,255), 2)
frame = cv2.circle(frame,(p0ok[i][0],p0ok[i][1]),2,(0,255,0),-1)
cv2.imshow('frame',frame)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
# Préparer pour l'itération suivante
gris1 = gris2.copy();
cv2.destroyAllWindows()
cap.release()
3 FST de Tanger