<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Enodev.fr / Christophe's log (Posts about photo)</title><link>https://www.enodev.fr/</link><description></description><atom:link href="https://www.enodev.fr/categories/photo.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Tue, 16 Jan 2024 22:07:06 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Time-lapse de fleurs de safran</title><link>https://www.enodev.fr/posts/time-lapse-de-fleurs-de-safran.html</link><dc:creator>Christophe Vu-Brugier</dc:creator><description>&lt;p&gt;Mi octobre, j'ai eu le plaisir d'assister à l'ouverture des fleurs de
safran
(&lt;em&gt;&lt;a href="https://fr.wikipedia.org/wiki/Crocus_sativus"&gt;Crocus sativus&lt;/a&gt;&lt;/em&gt;)
dans le potager de mes parents. L'occasion était belle de fixer sur la
&lt;del&gt;pellicule&lt;/del&gt; carte SD les étapes de la floraison pour en faire un
time-lapse.&lt;/p&gt;
&lt;video id="crocus-video" controls&gt;
  &lt;source src="https://www.enodev.fr/videos/fleurs-safran-timelapse-HD.mp4" type="video/mp4"&gt;
&lt;/source&gt;&lt;/video&gt;

&lt;p&gt;Cette vidéo accélérée 1500 fois a été réalisée en prenant une image
toutes les 5 minutes puis en générant une vidéo qui fait défiler 5
images par seconde.&lt;/p&gt;
&lt;p&gt;Pour réaliser la vidéo, j'ai employé deux logiciels en ligne de
commande : &lt;a href="https://www.imagemagick.org/"&gt;ImageMagick&lt;/a&gt;
et &lt;a href="https://www.ffmpeg.org/"&gt;ffmpeg&lt;/a&gt;. ImageMagick a permis de
recadrer, redimensionner et légender chaque image tandis que ffmpeg a
été utilisé pour combiner les images en une vidéo au format H.264.&lt;/p&gt;
&lt;h2&gt;Recadrage et redimensionnement&lt;/h2&gt;
&lt;p&gt;Au moment de la prise de vue, j'ai oublié de configurer mon appareil
photo pour prendre des clichés aux dimensions de la vidéo finale :
1920×1080 pixels. J'ai donc enregistré des images dont les
dimensions étaient trop grandes : 4608×3456 pixels
(ratio &lt;sup&gt;4&lt;/sup&gt;⁄&lt;sub&gt;3&lt;/sub&gt;). Il a fallu recadrer et
réduire chaque image à sa dimension finale : 1920×1080 pixels
(ratio &lt;sup&gt;16&lt;/sup&gt;⁄&lt;sub&gt;9&lt;/sub&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img alt="Recadrage et redimensionnement" class="img-fluid" src="https://www.enodev.fr/images/safran-recadrage-redimensionnement.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Les deux étapes de recadrage et de redimensionnement ont été réalisées
par une seule commande &lt;code&gt;convert&lt;/code&gt; en utilisant les options &lt;code&gt;-crop&lt;/code&gt; et
&lt;code&gt;-resize&lt;/code&gt; :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;convert&lt;span class="w"&gt; &lt;/span&gt;-crop&lt;span class="w"&gt; &lt;/span&gt;3840x2160+0+1130&lt;span class="w"&gt; &lt;/span&gt;-resize&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;50&lt;/span&gt;%&lt;span class="w"&gt; &lt;/span&gt;source.jpg&lt;span class="w"&gt; &lt;/span&gt;destination.jpg
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Cet appel à la commande &lt;code&gt;convert&lt;/code&gt; recadre d'abord l'image aux
dimensions 3840×2160 en décalant le cadre de 1130 pixels vers le
bas (et 0 pixel vers la droite) puis divise ses dimensions par deux
pour aboutir à une image de 1920×1080 pixels.&lt;/p&gt;
&lt;h2&gt;Extraction de l'heure de prise de vue et ajout de la légende&lt;/h2&gt;
&lt;p&gt;J'ai extrait la date et l'heure de la prise de vue pour chaque image
avec le programme &lt;code&gt;exiftool&lt;/code&gt; :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;exiftool&lt;span class="w"&gt; &lt;/span&gt;-DateTimeOriginal&lt;span class="w"&gt; &lt;/span&gt;image.jpg
&lt;span class="go"&gt;Date/Time Original              : 2016:10:17 08:37:09&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ensuite, j'ai utilisé la commande &lt;code&gt;convert&lt;/code&gt; pour ajouter une
&lt;em&gt;undercolor box&lt;/em&gt; qui contient la légende.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Ajout d'un légende" class="img-fluid" src="https://www.enodev.fr/images/safran-legende.jpg"&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;convert&lt;span class="w"&gt; &lt;/span&gt;source.jpg&lt;span class="w"&gt; &lt;/span&gt;-pointsize&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;50&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-font&lt;span class="w"&gt; &lt;/span&gt;Inconsolata&lt;span class="w"&gt; &lt;/span&gt;-fill&lt;span class="w"&gt; &lt;/span&gt;white&lt;span class="w"&gt; &lt;/span&gt;-undercolor&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'#00000080'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-annotate&lt;span class="w"&gt; &lt;/span&gt;+8+50&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;" Légende "&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;destination.jpg
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;La légende est écrite en caractères blancs (&lt;code&gt;-fill white&lt;/code&gt;) de 50
points de hauteur (&lt;code&gt;-pointsize 50&lt;/code&gt;), dans une police à chasse fixe
(&lt;code&gt;-font Inconsolata&lt;/code&gt;). Un fond noir en semi transparence (&lt;code&gt;-undercolor
'#00000080'&lt;/code&gt;) augmente la lisibilité.&lt;/p&gt;
&lt;h2&gt;Création de la vidéo au format H.264 à partir des images&lt;/h2&gt;
&lt;p&gt;La dernière étape a consisté à combiner les images en une vidéo
avec
&lt;a href="https://trac.ffmpeg.org/wiki/Slideshow"&gt;ffmpeg&lt;/a&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-framerate&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;/1&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;image-%03d.jpg&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libx264&lt;span class="w"&gt; &lt;/span&gt;-pix_fmt&lt;span class="w"&gt; &lt;/span&gt;yuv420p&lt;span class="w"&gt; &lt;/span&gt;-r&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;video.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Les images défilent au rythme de cinq par seconde (&lt;code&gt;-framerate 5/1&lt;/code&gt;)
et le codec vidéo choisi est x264 pour coder un flux vidéo H.264
(&lt;code&gt;-c:v libx264&lt;/code&gt;). J'ai du contraindre le &lt;em&gt;pixel format&lt;/em&gt; avec &lt;code&gt;-pix_fmt
yuv420p&lt;/code&gt; parce que Firefox 45 considère que la vidéo est corrompue
quand le &lt;em&gt;pixel format&lt;/em&gt; par défaut (yuv422p) est employé.&lt;/p&gt;</description><category>ffmpeg</category><category>ImageMagick</category><category>photo</category><category>time-lapse</category><guid>https://www.enodev.fr/posts/time-lapse-de-fleurs-de-safran.html</guid><pubDate>Tue, 01 Nov 2016 15:00:00 GMT</pubDate></item></channel></rss>