Pymecavideo 8.0
Étude cinématique à l'aide de vidéos
testfilm.py
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4import sys
5import threading
6import os
7import os.path
8
9import cv2
10
11
12class film:
13 """
14 Une classe pour accéder aux images d'un film
15 """
16
17 def __init__(self, filename):
18 """
19 le constructeur
20 @param filename le nom d'un fichier video
21 """
22 self.filename = filename
23 self.filesize = os.path.getsize(self.filename)
24 self.capture = cv2.VideoCapture(self.filename)
25
26 t = threading.Thread(target=self.autoTest)
27 t.start()
28 t.join(5.0) # attente de 5 secondes au plus
29
30 def autoTest(self):
31 self.ok = False
32
33 try:
34 self.frame = self.capture.read()
35 self.num = 0
36 self.fps = self.capture.get(cv2.CAP_PROP_FPS)
37 self.framecount = self.capture.get(cv2.CAP_PROP_FRAME_COUNT)
38 assert 1.0 * self.filesize / self.framecount > 60.0, "fichier aberrant en taille"
39 self.ok = True
40 except AssertionError:
41 print("assertion"+str(self.fps)+str(self.framecount))
42 pass
43 except ZeroDivisionError:
44 print("szero"+str(self.fps)+str(self.framecount))
45 return self.ok
46
47 def __int__(self):
48 return int(self.ok)
49
50 def __nonzero__(self):
51 return self.ok
52
53
54if __name__ == '__main__':
55 if len(sys.argv) > 1:
56 vidfile = sys.argv[1]
57 if film(vidfile):
58 sys.exit(0)
59 else:
60 sys.exit(1)
Une classe pour accéder aux images d'un film.
Definition: testfilm.py:15
def __init__(self, filename)
le constructeur
Definition: testfilm.py:21
def autoTest(self)
Definition: testfilm.py:30