<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dev on Blog GoHugo de Fredô : Linux, Proxmox, IA, Trail, Course, Randonnée, Gravel, Ski de Randonnée</title>
    <link>https://move.cyber-neurones.org/categories/dev/</link>
    <description>Recent content in Dev on Blog GoHugo de Fredô : Linux, Proxmox, IA, Trail, Course, Randonnée, Gravel, Ski de Randonnée</description>
    <generator>Hugo</generator>
    <language>fr</language>
    <lastBuildDate>Mon, 09 Dec 2024 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://move.cyber-neurones.org/categories/dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Python : test de la librairie calplot</title>
      <link>https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/</link>
      <pubDate>Mon, 09 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/</guid>
      <description>&lt;p&gt;Le plus longs c&amp;rsquo;est de fixer les problèmes Python &amp;hellip;&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;findfont: Font family &amp;#39;Helvetica&amp;#39; not found.&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Ensuite quelques lignes de code :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;import pandas as pd&#xA;import calplot&#xA;import pylab&#xA;from matplotlib import rcParams&#xA;&#xA;df_tem = pd.read_csv(&amp;#39;./VeloResume2020-2024-v4.csv&amp;#39;, delimiter=&amp;#34;;&amp;#34;)&#xA;df_tem2 = df_tem.groupby([df_tem[&amp;#39;date&amp;#39;].dt.date,&amp;#39;activity&amp;#39;])[&amp;#39;km&amp;#39;].sum().reset_index().rename(columns={&amp;#39;sum&amp;#39;:&amp;#39;km&amp;#39;})&#xA;df_tem2 = df_tem2.query(&amp;#39;activity==&amp;#34;E-Biking&amp;#34;&amp;#39;&#xA;fig = calplot.calplot(df_tem2[&amp;#39;km&amp;#39;],&#xA;                cmap=&amp;#34;BuGn&amp;#34;,&#xA;                fillcolor=&amp;#34;w&amp;#34;,&#xA;                linecolor=&amp;#34;w&amp;#34;,&#xA;                suptitle_kws=csfont,&#xA;                yearlabel_kws={&amp;#39;fontname&amp;#39;:&amp;#39;sans-serif&amp;#39;},&#xA;                fig_kws=dict(facecolor=&amp;#34;w&amp;#34;),&#xA;                subplot_kws=dict(facecolor=&amp;#34;w&amp;#34;),&#xA;                edgecolor=&amp;#34;grey&amp;#34;)&#xA;pylab.savefig(&amp;#39;E-Biking.png&amp;#39;)&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;style&gt;&#xA;&#x9;&#xA;&#xA;&#x9;&#xA;&lt;/style&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div id=&#34;gallery-89f12a4ee3348036c51a639832740c2e-0-wrapper&#34; class=&#34;gallery-wrapper&#34;&gt;&#xA;&lt;div id=&#34;gallery-89f12a4ee3348036c51a639832740c2e-0&#34; class=&#34;justified-gallery&#34;&gt;&#xA;&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&lt;div&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;a href=&#34;https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/images/mountain-biking.png&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;class=&#34;galleryImg&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;img&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;width=&#34;600&#34; height=&#34;408&#34;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;style=&#34;filter: blur(25px);&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;src=&#34;data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4&amp;#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5&amp;#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4&amp;#43;Tl5ufo6ery8/T19vf4&amp;#43;fr/2gAMAwEAAhEDEQA/APXzJiRUPVuhwf507DY6Ck2/7AP4/wCf8mkII/5Z5&amp;#43;h&amp;#43;v&amp;#43;fxoAUq5bOQB6AVDbKw1G4bJwY0GM8Ahn/xqUgnogz160QkedIO4A/Dk8UmNOwZXOMU04KPtJBPQkZxQfvn6/40i/dP&amp;#43;e9MQ4Fccjr0/wA/jTLdWF9MxI2GJCo/F/8A61KPuj6/1FOh/wCPl/8Arkn82pgf/9k=&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;class=&#34;lazy&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;data-src=&#34;https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/images/mountain-biking_hu_8dfa7a6416de47e.png&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/a&gt;&#xA;&#x9;&#x9;&#x9;&lt;/div&gt;&#xA;&#x9;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&lt;div&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;a href=&#34;https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/images/gravel-biking.png&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;class=&#34;galleryImg&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;img&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;width=&#34;600&#34; height=&#34;408&#34;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;style=&#34;filter: blur(25px);&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;src=&#34;data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4&amp;#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5&amp;#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4&amp;#43;Tl5ufo6ery8/T19vf4&amp;#43;fr/2gAMAwEAAhEDEQA/APYcN7UYbHQUxmUHB25xk5bFKpV1yFBBHrQA45AJO0Cq9up/tK4ck4MaDHYEM&amp;#43;f51Pjr8g/OmwH99ID1AGeenJ4pMadhGYBsBc/U49f8KYnEefLUsOOuO/PanN/rD/n1pF&amp;#43;4fqP50yRwEZzlBgnj/P4023VhfzMSNhiTaO/V/wD61KPuj6/1FOh/4&amp;#43;X/AOuSfzamFj//2Q==&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;class=&#34;lazy&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;data-src=&#34;https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/images/gravel-biking_hu_786135e6f72c4008.png&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/a&gt;&#xA;&#x9;&#x9;&#x9;&lt;/div&gt;&#xA;&#x9;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&lt;div&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;a href=&#34;https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/images/e-biking.png&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;class=&#34;galleryImg&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;img&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;width=&#34;600&#34; height=&#34;408&#34;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;style=&#34;filter: blur(25px);&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;src=&#34;data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4&amp;#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5&amp;#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4&amp;#43;Tl5ufo6ery8/T19vf4&amp;#43;fr/2gAMAwEAAhEDEQA/APYVD45Kn8KaEbcGJHGcfpTDKnPy5xwTg/5//XTHnjQFiDjpQS2iwAwGMLVW13f2xdkk48mLjPAO6TP9Kc0ignJAxwcZ9/8ACltBm5lfJOY1GT7Fv8aAvqhAh3k7sAnlQOOn/wBagRHOQ&amp;#43;FHUBRzUn8X&amp;#43;fekX7p/z3oCyI3R2YFZCBuyQVByPT9asQptZj2IGPpzUQ&amp;#43;6P89xViPoP90UDsf/2Q==&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;class=&#34;lazy&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;data-src=&#34;https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/images/e-biking_hu_84051562c4e68f48.png&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/a&gt;&#xA;&#x9;&#x9;&#x9;&lt;/div&gt;&#xA;&#x9;&#x9;&#xA;&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&lt;div&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;a href=&#34;https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/images/biking.png&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;class=&#34;galleryImg&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;img&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;width=&#34;600&#34; height=&#34;408&#34;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;style=&#34;filter: blur(25px);&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;src=&#34;data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4&amp;#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABYAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5&amp;#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4&amp;#43;Tl5ufo6ery8/T19vf4&amp;#43;fr/2gAMAwEAAhEDEQA/APWLhZDCW3gouOAp3ZHvmqwuUtowhkZmIzuZevHU/r/nmtDacfdVvxx/n/69McqEbKqNqk57dKdxWK0C&amp;#43;aouBMwz8wRhjGT05qa1QrqE53EgxoOTxkM/&amp;#43;NSbGwCVXOORnPP1p0BHnSDuAOPTk0n0GtNAymcY/wA/5zTVEWD&amp;#43;7A7UH75&amp;#43;v&amp;#43;NIvRvr/WgBQY8bgmC3Wm26sL6ZiRtMSbR&amp;#43;L/8A1qB91f8APcU&amp;#43;H/j5f/rkn82pgf/Z&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;class=&#34;lazy&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;data-src=&#34;https://move.cyber-neurones.org/post/2024/12/2024-12-09-python-test-de-la-librairie-calplot/images/biking_hu_8472753c12e6f33c.png&#34;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/a&gt;&#xA;&#x9;&#x9;&#x9;&lt;/div&gt;&#xA;&#x9;&#x9;&#xA;&#x9;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;script&gt;&#xA;&#x9;if (!(&#34;HSCGjQuery&#34; in window)) {&#xA;&#x9;&#x9;if (!window.jQuery) {&#xA;&#x9;&#x9;&#x9;throw new Error(&#34;jQuery is not loaded, hugo-shortcode-gallery wont work without it!&#34;);&#xA;&#x9;&#x9;}&#xA;&#x9;&#x9;window.HSCGjQuery = window.jQuery.noConflict(true);&#xA;&#x9;}&#xA;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;;(function($) {&#xA;&#xA;&#x9;&#x9;$( document ).ready(() =&gt; {&#xA;&#x9;&#x9;&#x9;const gallery = $(&#34;#gallery-89f12a4ee3348036c51a639832740c2e-0&#34;);&#xA;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let swipeboxInstance = null;&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;gallery.on(&#39;jg.complete&#39;, () =&gt; {&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;$(() =&gt; {&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;$(&#39;.lazy&#39;).Lazy({&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;visibleOnly: true,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;afterLoad: element =&gt; element.css({filter: &#34;none&#34;, transition: &#34;filter 1.0s ease-in-out&#34;})&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;});&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;});&#xA;&#x9;&#x9;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;swipeboxInstance = $(&#39;.galleryImg&#39;).swipebox(&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;$.extend({},&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;{  }&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;)&#xA;&#x9;&#x9;&#x9;&#x9;);&#xA;&#x9;&#x9;&#x9;});&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;gallery.justifiedGallery($.extend(&#xA;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;rowHeight : &#34;150&#34;,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;margins : &#34;5&#34;,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;border : 0,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;randomize :  false ,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;waitThumbnailsLoad : false,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;lastRow : &#34;justify&#34;,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;captions : false,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#x9;},&#xA;&#x9;&#x9;&#x9;&#x9;{  }&#xA;&#x9;&#x9;&#x9;));&#xA;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;});&#xA;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;&#xA;&#x9;})(window.HSCGjQuery)&#xA;&lt;/script&gt;</description>
    </item>
    <item>
      <title>Python : matplotlib : Issue line 303 text.parse_math</title>
      <link>https://move.cyber-neurones.org/post/2023/12/2023-12-09-python-matplotlib-issue-line-303-text-parse_math/</link>
      <pubDate>Sat, 09 Dec 2023 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2023/12/2023-12-09-python-matplotlib-issue-line-303-text-parse_math/</guid>
      <description>&lt;p&gt;Sur Kali OS j&amp;rsquo;ai eu cette erreur :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&#xA;Bad key text.parse_math in file /usr/share/matplotlib/mpl-data/matplotlibrc, line 303 (&amp;#39;text.parse_math: False # Use mathtext if there is an even number of unescaped&amp;#39;)&#xA;You probably need to get an updated matplotlibrc file from&#xA;https://github.com/matplotlib/matplotlib/blob/v3.5.2/matplotlibrc.template&#xA;or from the matplotlib source distribution&#xA;Traceback (most recent call last):&#xA;File &amp;#34;....Test.py&amp;#34;, line 31, in &amp;lt;module&amp;gt;&#xA;import gradio as gr&#xA;File &amp;#34;/usr/local/lib/python3.11/dist-packages/gradio/__init__.py&amp;#34;, line 3, in &amp;lt;module&amp;gt;&#xA;import gradio._simple_templates&#xA;File &amp;#34;/usr/local/lib/python3.11/dist-packages/gradio/_simple_templates/__init__.py&amp;#34;, line 1, in &amp;lt;module&amp;gt;&#xA;from .simpledropdown import SimpleDropdown&#xA;File &amp;#34;/usr/local/lib/python3.11/dist-packages/gradio/_simple_templates/simpledropdown.py&amp;#34;, line 6, in &amp;lt;module&amp;gt;&#xA;from gradio.components.base import FormComponent&#xA;File &amp;#34;/usr/local/lib/python3.11/dist-packages/gradio/components/__init__.py&amp;#34;, line 1, in &amp;lt;module&amp;gt;&#xA;from gradio.components.annotated_image import AnnotatedImage&#xA;File &amp;#34;/usr/local/lib/python3.11/dist-packages/gradio/components/annotated_image.py&amp;#34;, line 11, in &amp;lt;module&amp;gt;&#xA;from gradio import processing_utils, utils&#xA;File &amp;#34;/usr/local/lib/python3.11/dist-packages/gradio/processing_utils.py&amp;#34;, line 23, in &amp;lt;module&amp;gt;&#xA;from gradio.utils import abspath&#xA;File &amp;#34;/usr/local/lib/python3.11/dist-packages/gradio/utils.py&amp;#34;, line 38, in &amp;lt;module&amp;gt;&#xA;import matplotlib&#xA;File &amp;#34;/usr/lib/python3/dist-packages/matplotlib/__init__.py&amp;#34;, line 880, in &amp;lt;module&amp;gt;&#xA;rcParamsDefault = _rc_params_in_file(&#xA;^^^^^^^^^^^^^^^^^^^&#xA;File &amp;#34;/usr/lib/python3/dist-packages/matplotlib/__init__.py&amp;#34;, line 814, in _rc_params_in_file&#xA;config[key] = val # try to convert to proper type or raise&#xA;~~~~~~^^^^^&#xA;File &amp;#34;/usr/lib/python3/dist-packages/matplotlib/__init__.py&amp;#34;, line 650, in __setitem__&#xA;raise ValueError(f&amp;#34;Key {key}: {ve}&amp;#34;) from None&#xA;ValueError: Key grid.color: &amp;#39;&amp;#34;&amp;#39; does not look like a color arg&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc edité le fichier /usr/share/matplotlib/mpl-data/matplotlibrc pour mettre en commentaire la ligne ( sachant que False ou True on a la même erreur) :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux/Python : Merge d&#39;un GPX et d&#39;une video</title>
      <link>https://move.cyber-neurones.org/post/2023/07/2023-07-06-linux-python-merge-dun-gpx-et-dune-video/</link>
      <pubDate>Thu, 06 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2023/07/2023-07-06-linux-python-merge-dun-gpx-et-dune-video/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Etape 1&lt;/strong&gt; : Installation : &lt;a href=&#34;https://pypi.org/project/gopro-overlay/&#34;&gt;https://pypi.org/project/gopro-overlay/&lt;/a&gt;&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ python3 -m venv venv&#xA;$ venv/bin/pip install gopro-overlay&#xA;$ mkdir ~/.gopro-graphics/&#xA;$ cat ~/.gopro-graphics/ffmpeg-profiles.json&#xA;{&#xA;  &amp;#34;overlay&amp;#34;: {&#xA;    &amp;#34;input&amp;#34;: [],&#xA;    &amp;#34;output&amp;#34;: [&amp;#34;-vcodec&amp;#34;, &amp;#34;png&amp;#34;]&#xA;  }&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Etape 2&lt;/strong&gt; : Premier test et premier drame&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ venv/bin/gopro-dashboard.py --use-gpx-only --gpx Nextcloud/Pipe/Video/BoucleResideo.gpx 1920x1080 Nextcloud/Pipe/Video/BoucleResideo.mov &#xA;Starting gopro-dashboard version 0.100.0&#xA;ffmpeg version is 4.4.2-0ubuntu0.22.04.1&#xA;Using Python version 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0]&#xA;Traceback (most recent call last):&#xA;  File &amp;#34;/home/arias/venv/bin/gopro-dashboard.py&amp;#34;, line 107, in &#xA;    font = load_font(args.font)&#xA;  File &amp;#34;/home/arias/venv/lib/python3.10/site-packages/gopro_overlay/font.py&amp;#34;, line 5, in load_font&#xA;    return ImageFont.truetype(font=font, size=size)&#xA;  File &amp;#34;/home/arias/venv/lib/python3.10/site-packages/PIL/ImageFont.py&amp;#34;, line 1008, in truetype&#xA;    return freetype(font)&#xA;  File &amp;#34;/home/arias/venv/lib/python3.10/site-packages/PIL/ImageFont.py&amp;#34;, line 1005, in freetype&#xA;    return FreeTypeFont(font, size, index, encoding, layout_engine)&#xA;  File &amp;#34;/home/arias/venv/lib/python3.10/site-packages/PIL/ImageFont.py&amp;#34;, line 255, in __init__&#xA;    self.font = core.getfont(&#xA;OSError: cannot open resource&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Etape 2b&lt;/strong&gt; : Avec copie de la &amp;ldquo;font&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python : Creation de PNG à base de CSV, avec des EXIF de localisation</title>
      <link>https://move.cyber-neurones.org/post/2021/02/2021-02-22-python-creation-de-png-a-base-de-csv-avec-des-exif-de-localisation/</link>
      <pubDate>Mon, 22 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2021/02/2021-02-22-python-creation-de-png-a-base-de-csv-avec-des-exif-de-localisation/</guid>
      <description>&lt;p&gt;J&amp;rsquo;ai fait un petit programme pour faire des PNG à l&amp;rsquo;aide d&amp;rsquo;un fichier CSV. Le but est de mettre des balises sur Google Picture.&lt;/p&gt;&#xA;&lt;p&gt;Voici un exemple de fichier CSV :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cat list.csv &#xA;Nom,Année,Mois,Jours,Lieux,Pays&#xA;Deplacement sur Paris,2018,11,01,Paris,France&#xA;Deplacement sur Londres,2011,11,01,London,UK&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Voici le programme :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;from PIL import Image, ImageDraw, ImageFont&#xA;import piexif&#xA;from datetime import datetime&#xA;import csv&#xA;from geopy.geocoders import Nominatim&#xA;from GPSPhoto import gpsphoto&#xA;&#xA;geolocator = Nominatim(user_agent=&amp;#34;Your_Name&amp;#34;)&#xA;&#xA;with open(&amp;#39;list.csv&amp;#39;) as csv_file:&#xA;    csv_reader = csv.reader(csv_file, delimiter=&amp;#39;,&amp;#39;)&#xA;    line_count = 0&#xA;    for row in csv_reader:&#xA;        if line_count == 0:&#xA;            line_count += 1&#xA;        else:&#xA;            name = &amp;#39;%s \n Le %d/%d/%d \n a %s,%s . :&amp;#39; % (str(row[0]),int(row[1]),int(row[2]),int(row[3]),str(row[4]),str(row[5]))&#xA;            print(&amp;#39;\t %s &amp;#39; % name)&#xA;            line_count += 1&#xA;            filename = &amp;#39;image-%d.jpg&amp;#39; % (line_count)&#xA;&#xA;            img = Image.new(&amp;#39;RGB&amp;#39;, (1024, 800), color = (73, 109, 137))&#xA;&#xA;            d = ImageDraw.Draw(img)&#xA;            fontsize = 80 &#xA;            font = ImageFont.truetype(&amp;#39;/usr/share/fonts/truetype/msttcorefonts/Arial.ttf&amp;#39;, fontsize)&#xA;            d.text((10,10), name, font=font)&#xA;            img.save(filename)&#xA;&#xA;            exif_dict = piexif.load(filename)&#xA;            new_date = datetime(int(row[1]), int(row[2]), int(row[3]), 0, 0, 0).strftime(&amp;#34;%Y:%m:%d %H:%M:%S&amp;#34;)&#xA;            exif_dict[&amp;#39;0th&amp;#39;][piexif.ImageIFD.DateTime] = new_date&#xA;            exif_dict[&amp;#39;Exif&amp;#39;][piexif.ExifIFD.DateTimeOriginal] = new_date&#xA;            exif_dict[&amp;#39;Exif&amp;#39;][piexif.ExifIFD.DateTimeDigitized] = new_date&#xA;            exif_bytes = piexif.dump(exif_dict)&#xA;            piexif.insert(exif_bytes, filename)&#xA;            address= &amp;#39;%s,%s&amp;#39; % (row[4], row[5])&#xA;            location = geolocator.geocode(address)&#xA;            print(&amp;#39;\t\t %f %f %d&amp;#39; % (location.latitude, location.longitude, location.altitude))&#xA;            photo = gpsphoto.GPSPhoto(filename)&#xA;            info = gpsphoto.GPSInfo((location.latitude, location.longitude), alt=int(location.altitude), timeStamp=new_date)&#xA;            photo.modGPSData(info, filename)&#xA;&#xA;    print(&amp;#39;Processed %d lines.&amp;#39; % line_count)&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Pour qu&amp;rsquo;il fonctionne il faut avoir installé :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quand Python vient corriger un problème de script ... Merci</title>
      <link>https://move.cyber-neurones.org/post/2021/02/2021-02-08-quand-python-vient-corriger-un-probleme-de-script-merci/</link>
      <pubDate>Mon, 08 Feb 2021 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2021/02/2021-02-08-quand-python-vient-corriger-un-probleme-de-script-merci/</guid>
      <description>&lt;p&gt;Je me suis fait des doublons de fichiers dans mes photos, heureusement Python c&amp;rsquo;est simple et convivial :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;import os&#xA;import sys&#xA;import re&#xA;import PIL&#xA;from PIL import Image&#xA;&#xA;walk_dir = &amp;#34;./Nextcloud/Photos/&amp;#34;&#xA;&#xA;print(&amp;#39;walk_dir = &amp;#39; + walk_dir)&#xA;print(&amp;#39;walk_dir (absolute) = &amp;#39; + os.path.abspath(walk_dir))&#xA;&#xA;for root, subdirs, files in os.walk(walk_dir):&#xA;    list_file_path = os.path.join(root, &amp;#39;my-directory-check.txt&amp;#39;)&#xA;    print(&amp;#39;list_file_path = &amp;#39; + list_file_path)&#xA;    with open(list_file_path, &amp;#39;wb&amp;#39;) as list_file:&#xA;        #for subdir in subdirs:&#xA;        #   print(&amp;#39;\t- subdirectory &amp;#39; + subdir)&#xA;        for filename in files:&#xA;            file_path = os.path.join(root, filename)&#xA;            # print(&amp;#39;\t- file %s (full path: %s)&amp;#39; % (filename, file_path))&#xA;            base = os.path.splitext(filename)[0]&#xA;            if (base.endswith(&amp;#39;_1&amp;#39;)):&#xA;                    #print(&amp;#39;\t- Doublon probable %s %s (full path: %s)&amp;#39; % (filename, base, file_path))&#xA;                    double = re.sub(&amp;#39;_1$&amp;#39;, &amp;#39;&amp;#39;, base)&#xA;                    double = double + &amp;#39;.jpg&amp;#39;&#xA;                    double2 = re.sub(&amp;#39;_1$&amp;#39;, &amp;#39;&amp;#39;, base)&#xA;                    double2 = double2 + &amp;#39;.JPG&amp;#39;&#xA;                    file_path_double = os.path.join(root, double)&#xA;                    file_path_double2 = os.path.join(root, double2)&#xA;                    if os.path.isfile(file_path_double):&#xA;                        #print(&amp;#39;\t- Doublon OK %s &amp;amp; %s&amp;#39; % (file_path, file_path_double))&#xA;                        img1 = PIL.Image.open(file_path)&#xA;                        img2 = PIL.Image.open(file_path_double)&#xA;                        wid1, hgt1 = img1.size &#xA;                        wid2, hgt2 = img2.size &#xA;                        if (wid1 == wid2) and (hgt1 == hgt2):&#xA;                            #print(&amp;#39;Meme resolution&amp;#39;)&#xA;                            size1 = os.path.getsize(file_path)&#xA;                            size2 = os.path.getsize(file_path_double)&#xA;                            if (size1 &amp;gt; size2):&#xA;                                    print(&amp;#34;%s &amp;gt; %s&amp;#34; % (file_path, file_path_double));&#xA;                                    os.remove(file_path_double);&#xA;                            else:&#xA;                                    print(&amp;#34;%s &amp;lt; %s&amp;#34; % (file_path, file_path_double));&#xA;                                    os.remove(file_path);&#xA;                    elif os.path.isfile(file_path_double2):&#xA;                        img1 = PIL.Image.open(file_path)&#xA;                        img2 = PIL.Image.open(file_path_double2)&#xA;                        wid1, hgt1 = img1.size&#xA;                        wid2, hgt2 = img2.size&#xA;                        if (wid1 == wid2) and (hgt1 == hgt2):&#xA;                            #print(&amp;#39;Meme resolution&amp;#39;)&#xA;                            size1 = os.path.getsize(file_path)&#xA;                            size2 = os.path.getsize(file_path_double2)&#xA;                            if (size1 &amp;gt; size2):&#xA;                                    print(&amp;#34;%s &amp;gt; %s&amp;#34; % (file_path, file_path_double2));&#xA;                                    os.remove(file_path_double2);&#xA;                            else:&#xA;                                    print(&amp;#34;%s &amp;lt; %s&amp;#34; % (file_path, file_path_double2));&#xA;                                    os.remove(file_path);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Ensuite pour faire un clean des fichiers txt :&lt;/p&gt;</description>
    </item>
    <item>
      <title>(Draft) Ubuntu, Jupyter Notebook, Python3, Tensorflow, OpenCV : Comptage des cyclistes avec yolo model et floutage des visages</title>
      <link>https://move.cyber-neurones.org/post/2020/10/2020-10-12-draft-ubuntu-jupyter-notebook-python3-tensorflow-opencv-comptage-des-cyclistes-avec-yolo-model-et-floutage-des-visages/</link>
      <pubDate>Mon, 12 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2020/10/2020-10-12-draft-ubuntu-jupyter-notebook-python3-tensorflow-opencv-comptage-des-cyclistes-avec-yolo-model-et-floutage-des-visages/</guid>
      <description>&lt;p&gt;J&amp;rsquo;ai enfin mon process complet, pour compter les cyclistes et flouter les visages dans la vidéo :&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Etape 1 :&lt;/strong&gt; Faire la vidéo avec la GoPRO.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le résultat est un MP4.&lt;/li&gt;&#xA;&lt;li&gt;La taille : &lt;strong&gt;91 Mo&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Metadata:&#xA;major_brand : mp42&#xA;minor_version : 0&#xA;compatible_brands: mp42isomavc1&#xA;creation_time : 2020-10-04T13:52:54.000000Z&#xA;encoder : HandBrake 0.9.8 2012071800&#xA;Duration: 00:01:51.44, start: 0.000000, bitrate: 6813 kb/s&#xA;Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 6810 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 180k tbc (default)&#xA;Metadata:&#xA;creation_time : 2020-10-04T13:52:54.000000Z&#xA;encoder : JVT/AVC Coding&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Etape 2 :&lt;/strong&gt; Passer Jupyter Notebook, Python3, Tensorflow, OpenCV.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python facetool : Modification d&#39;un visage par une image dans un MP4.</title>
      <link>https://move.cyber-neurones.org/post/2020/10/2020-10-12-python-facetool-modification-dun-visage-par-une-image-dans-un-mp4/</link>
      <pubDate>Mon, 12 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2020/10/2020-10-12-python-facetool-modification-dun-visage-par-une-image-dans-un-mp4/</guid>
      <description>&lt;p&gt;J&amp;rsquo;ai téléchargé &lt;a href=&#34;https://github.com/hay/facetool&#34;&gt;https://github.com/hay/facetool&lt;/a&gt; afin de faire la modification des visages via une commande du type :&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;./facetool.py swap -i smiley.jpg -t output-bicyle.mp4 -o swap-bicyle.mp4&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;D&amp;rsquo;abord j&amp;rsquo;ai eu un premier problème que j&amp;rsquo;ai fixé ainsi : &lt;code&gt;cd /usr/lib/python3/dist-packages sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et maintenant j&amp;rsquo;ai un bug dans le programme :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;No faces found, could not swap (Faceswapping smiley.jpg on head-tmp-jdrmcn3j/2357.jpg, saving to out-tmp-jdrmcn3j/2357.jpg)&#xA;100%|███████████████████████████████████████████████████████████████████▉| 2671/2672 [25:15&amp;lt;00:00, 2.30it/s]&#xA;No faces found, could not swap (Faceswapping smiley.jpg on head-tmp-jdrmcn3j/1180.jpg, saving to out-tmp-jdrmcn3j/1180.jpg)&#xA;Traceback (most recent call last):&#xA;File &amp;#34;./facetool.py&amp;#34;, line 591, in &amp;lt;module&amp;gt;&#xA;main(args)&#xA;File &amp;#34;./facetool.py&amp;#34;, line 565, in main&#xA;swapper.swap_image_to_video(args.target, args.input, args.output)&#xA;File &amp;#34;./github/facetool/facetool/swapper.py&amp;#34;, line 206, in swap_image_to_video&#xA;combineframes(self.tempdirs.out, out)&#xA;File &amp;#34;./github/facetool/facetool/media.py&amp;#34;, line 49, in combineframes&#xA;first_file = list(glob(f&amp;#34;{inp}/*&amp;#34;))[0]&#xA;IndexError: list index out of range&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Bref j&amp;rsquo;ai l&amp;rsquo;impression que cela ne détecte aucun visage :&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
