Permalink
Browse files

saves a video as images

  • Loading branch information...
sdpython committed Dec 29, 2017
1 parent d085304 commit 32c36a69f012557301b95c0150a07ab7087e1645
@@ -5,14 +5,14 @@
:date: 2017-08-14
:categories: histoire
C'est une histoire de marionnette qui a commencé avec
C'est une histoire de marionnettes qui a commencé avec
quelques bouts de journaux amolis dans une bassine d'eau,
des capsules de cafés usagées, des serviettes en papier
émiettées, l'aluminium des barres de chocolat, des tiges
pour brochettes, de la gouache, une immense toile cirée,
un vieux drap, une paire de ciseaux et beaucoup de colle.
Les marionnettes ne peuvent conter que l'histoire pour
laquelle elles ont été créées.
laquelle elles ont été créées.
.. image:: mar0.jpg
:width: 600
@@ -21,8 +21,10 @@
Parmi eux, deux frères jumeaux, l'un a l'ouïe fine, le second
l'odorat infaillible. Le dernier amis a des yeux perçants,
il reste un peu en retrait et observe tout en riant sous cape.
Un champignon les nargue depuis une petite fenêtre découpé
dans le drap qui cache les marionnettiste. La suite de l'histoire
Un champignon les nargue depuis une petite fenêtre découpée
dans le drap qui cache les marionnettistes.
Ils n'attraperont le champignon que s'ils s'associent ce qu'ils
ne feront qausiment jamais. La suite de l'histoire
est laissée à votre convenance.
.. image:: mar1.jpg
@@ -52,4 +54,4 @@
pour le calmer. Malheureusement, ça le fait grossir et il ne
rentre plus dans la bouteille. Ils le relâchent encore.
Bref, c'est sans simple.
C'est le genre d'histoire à rallonge.
@@ -42,7 +42,7 @@
from pyquickhelper.loghelper import fLOG
from pyquickhelper.pycode import get_temp_folder, ExtTestCase
from src.code_beatrix.faq.faq_video import extract_video, save_video
from src.code_beatrix.faq.faq_video import extract_video, save_video, video_enumerate_frames
class TestVideo(ExtTestCase):
@@ -61,6 +61,19 @@ def test_extract_video(self):
save_video(vid2, exp)
self.assertExists(exp)
def test_extract_frames(self):
fLOG(
__file__,
self._testMethodName,
OutputPrint=__name__ == "__main__")
temp = get_temp_folder(__file__, "temp_video_extract_frames")
vid = os.path.join(temp, '..', 'data', 'videxa.mp4')
fra = list(video_enumerate_frames(vid))
self.assertEqual(len(fra), 78)
self.assertEqual(fra[0].shape, (720, 404, 3))
fns = list(video_enumerate_frames(vid, folder=temp))
self.assertEqual(len(fns), 78)
if __name__ == "__main__":
unittest.main()
View
@@ -18,7 +18,7 @@ init:
install:
- "%PYTHON%\\python -m pip install --upgrade pip"
- "%PYTHON%\\Scripts\\pip install pymyinstall"
- "%PYTHON%\\Scripts\\pymy_install3 --set=ensae_teaching_cs"
- "%PYTHON%\\Scripts\\pymy_install3 --set=pyquickhelper"
- "%PYTHON%\\Scripts\\pip install xlrd"
- "%PYTHON%\\Scripts\\pip install flask"
- "%PYTHON%\\Scripts\\pip install psutil"
@@ -7,6 +7,7 @@
import io
import os
from pytube import YouTube
from imageio import imsave
from moviepy.video.VideoClip import VideoClip
from moviepy.editor import VideoFileClip
@@ -118,6 +119,14 @@ def video_enumerate_frames(video_or_file, folder=None, fps=10, pattern='images_%
for frame in video.iter_frames(fps=fps, **kwargs):
yield frame
else:
for frame in video.iter_frames(fps=fps, **kwargs):
if 'dtype' in kwargs:
if kwargs['dtype'] != 'uint8':
raise ValueError("dtype must be uint8")
else:
del kwargs['dtype']
for i, frame in enumerate(video.iter_frames(fps=fps, dtype='uint8', **kwargs)):
# saves as image
raise NotImplementedError()
name = os.path.join(folder, pattern % i)
imsave(name, frame)
yield name

0 comments on commit 32c36a6

Please sign in to comment.