{"id":3743,"date":"2026-09-18T10:37:43","date_gmt":"2026-09-18T09:37:43","guid":{"rendered":"https:\/\/www.macerobotics.com\/?p=3743"},"modified":"2026-09-18T13:24:48","modified_gmt":"2026-09-18T12:24:48","slug":"gestion-de-2-cameras-avec-le-robot-mr25","status":"publish","type":"post","link":"https:\/\/www.macerobotics.com\/?p=3743","title":{"rendered":"Gestion de 2 cameras avec le robot MR25"},"content":{"rendered":"<p class=\"x1yc453h x1hpqcdg x1ekroe6 xutxfr x1fie51u xgyxj25 xkyrhof x1elgs31 x1fv8qjw x1tbvfm1 xb72syl x1iew0xx x1c2l018 x14l7nz5 xuw7688 x1pjt2rx x160d6zm xrxpjvj\" dir=\"ltr\">Le robot MR25 est \u00e9quip\u00e9 d\u2019une carte <strong class=\"x1s688f\">Raspberry Pi 5<\/strong> disposant de deux connecteurs d\u00e9di\u00e9s aux cam\u00e9ras. Il est donc possible d\u2019utiliser simultan\u00e9ment deux cam\u00e9ras sur le robot.<\/p>\n<p dir=\"ltr\"><a href=\"http:\/\/fr.macerobotics.com\/wp-content\/uploads\/sites\/4\/2025\/09\/DSC03235-removebg-preview.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-3813 aligncenter\" src=\"http:\/\/fr.macerobotics.com\/wp-content\/uploads\/sites\/4\/2025\/09\/DSC03235-removebg-preview.png\" alt=\"\" width=\"369\" height=\"208\" \/><\/a><\/p>\n<p class=\"x1yc453h x1hpqcdg x1ekroe6 xutxfr x1fie51u xgyxj25 xkyrhof x1elgs31 x1fv8qjw x1tbvfm1 xb72syl x1iew0xx x1c2l018 x14l7nz5 xuw7688 x1pjt2rx x160d6zm xrxpjvj\" dir=\"ltr\">Ce tutoriel pr\u00e9sente les \u00e9tapes n\u00e9cessaires pour <strong class=\"x1s688f\">configurer et utiliser deux cam\u00e9ras avec le robot MR25<\/strong>, ainsi que la r\u00e9alisation de captures d\u2019images avec chacune d\u2019elles.<\/p>\n<h2>D\u00e9tecter les 2 cameras<\/h2>\n<p>Listez les cameras avec cette commande :<\/p>\n<pre>$ rpicam-hello --list-cameras<\/pre>\n<p>Vous devez voir la d\u00e9tection des 2 cameras :<\/p>\n<p><a href=\"http:\/\/fr.macerobotics.com\/wp-content\/uploads\/sites\/4\/2026\/09\/Capture-decran-2026-09-18-111428.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4099\" src=\"http:\/\/fr.macerobotics.com\/wp-content\/uploads\/sites\/4\/2026\/09\/Capture-decran-2026-09-18-111428.png\" alt=\"\" width=\"917\" height=\"350\" \/><\/a><\/p>\n<h2>Prendre une photo avec les 2 cameras<\/h2>\n<p>Voici un exemple de la prise d&#8217;une photo sur chaque cameras :<\/p>\n<div class=\"code-embed-wrapper\"> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\">#!\/usr\/bin\/env python3<br\/><br\/># Import de la biblioth\u00e8que Picamera2 pour contr\u00f4ler les cam\u00e9ras Raspberry Pi<br\/>from picamera2 import Picamera2<br\/><br\/># Fonction permettant de mettre le programme en pause<br\/>from time import sleep<br\/><br\/># Permet de r\u00e9cup\u00e9rer la date et l&#039;heure actuelles<br\/>from datetime import datetime<br\/><br\/># Permet de g\u00e9rer facilement les chemins et dossiers<br\/>from pathlib import Path<br\/><br\/><br\/># ============================================================<br\/># DOSSIER DE SAUVEGARDE<br\/># ============================================================<br\/><br\/># Cr\u00e9ation du dossier &quot;photos&quot; s&#039;il n&#039;existe pas d\u00e9j\u00e0<br\/>output_dir = Path(&quot;photos&quot;)<br\/>output_dir.mkdir(exist_ok=True)<br\/><br\/><br\/># ============================================================<br\/># HORODATAGE<br\/># ============================================================<br\/><br\/># Cr\u00e9ation d&#039;un horodatage commun aux deux photos<br\/># Format : AAAAMMJJ_HHMMSS<br\/># Exemple : 20260918_112530<br\/>timestamp = datetime.now().strftime(&quot;%Y%m%d_%H%M%S&quot;)<br\/><br\/><br\/># ============================================================<br\/># CAM\u00c9RA 0<br\/># ============================================================<br\/><br\/># Cr\u00e9ation de l&#039;objet correspondant \u00e0 la cam\u00e9ra 0<br\/>cam0 = Picamera2(0)<br\/><br\/># Cr\u00e9ation de la configuration pour une photo fixe<br\/>#<br\/># R\u00e9solution utilis\u00e9e :<br\/># 4608 x 2592 pixels<br\/>#<br\/># Cette r\u00e9solution correspond \u00e0 la r\u00e9solution souhait\u00e9e<br\/># pour la cam\u00e9ra 0.<br\/>config0 = cam0.create_still_configuration(<br\/>    main={&quot;size&quot;: (4608, 2592)}<br\/>)<br\/><br\/># Application de la configuration \u00e0 la cam\u00e9ra<br\/>cam0.configure(config0)<br\/><br\/># D\u00e9marrage de la cam\u00e9ra<br\/>cam0.start()<br\/><br\/># Petite attente afin de laisser la cam\u00e9ra s&#039;initialiser<br\/># et stabiliser l&#039;image avant la capture.<br\/>sleep(2)<br\/><br\/># Cr\u00e9ation du nom du fichier de sortie<br\/>#<br\/># Exemple :<br\/># photos\/camera0_20260918_112530.jpg<br\/>file0 = output_dir \/ f&quot;camera0_{timestamp}.jpg&quot;<br\/><br\/># Affichage dans le terminal du fichier qui va \u00eatre cr\u00e9\u00e9<br\/>print(f&quot;Capture cam\u00e9ra 0 : {file0}&quot;)<br\/><br\/># Capture d&#039;une photo et sauvegarde directement au format JPEG<br\/>cam0.capture_file(str(file0))<br\/><br\/># Arr\u00eat de la cam\u00e9ra 0<br\/>cam0.stop()<br\/><br\/># Lib\u00e9ration compl\u00e8te des ressources utilis\u00e9es par la cam\u00e9ra 0<br\/>#<br\/># Cette \u00e9tape est particuli\u00e8rement importante ici :<br\/># elle permet de lib\u00e9rer les buffers m\u00e9moire DMA avant<br\/># de configurer la deuxi\u00e8me cam\u00e9ra.<br\/>cam0.close()<br\/><br\/><br\/># ============================================================<br\/># CAM\u00c9RA 1<br\/># ============================================================<br\/><br\/># Cr\u00e9ation de l&#039;objet correspondant \u00e0 la cam\u00e9ra 1<br\/>cam1 = Picamera2(1)<br\/><br\/># Cr\u00e9ation de la configuration pour une photo fixe<br\/>#<br\/># R\u00e9solution utilis\u00e9e :<br\/># 3280 x 2464 pixels<br\/>#<br\/># Cette r\u00e9solution correspond \u00e0 la r\u00e9solution souhait\u00e9e<br\/># pour la cam\u00e9ra 1.<br\/>config1 = cam1.create_still_configuration(<br\/>    main={&quot;size&quot;: (3280, 2464)}<br\/>)<br\/><br\/># Application de la configuration \u00e0 la cam\u00e9ra<br\/>cam1.configure(config1)<br\/><br\/># D\u00e9marrage de la cam\u00e9ra<br\/>cam1.start()<br\/><br\/># Petite attente afin de laisser la cam\u00e9ra s&#039;initialiser<br\/># et stabiliser l&#039;image avant la capture.<br\/>sleep(2)<br\/><br\/># Cr\u00e9ation du nom du fichier de sortie<br\/>#<br\/># Exemple :<br\/># photos\/camera1_20260918_112530.jpg<br\/>file1 = output_dir \/ f&quot;camera1_{timestamp}.jpg&quot;<br\/><br\/># Affichage dans le terminal du fichier qui va \u00eatre cr\u00e9\u00e9<br\/>print(f&quot;Capture cam\u00e9ra 1 : {file1}&quot;)<br\/><br\/># Capture d&#039;une photo et sauvegarde directement au format JPEG<br\/>cam1.capture_file(str(file1))<br\/><br\/># Arr\u00eat de la cam\u00e9ra 1<br\/>cam1.stop()<br\/><br\/># Lib\u00e9ration compl\u00e8te des ressources utilis\u00e9es par la cam\u00e9ra 1<br\/>cam1.close()<br\/><br\/><br\/># ============================================================<br\/># FIN DU PROGRAMME<br\/># ============================================================<br\/><br\/># Message indiquant que les deux captures sont termin\u00e9es<br\/>print(&quot;Captures termin\u00e9es.&quot;)<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div>\n<p>Fin du tuto !<\/p>\n<p>Nicolas<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le robot MR25 est \u00e9quip\u00e9 d\u2019une carte Raspberry Pi 5 disposant de deux connecteurs d\u00e9di\u00e9s aux cam\u00e9ras. Il est donc possible d\u2019utiliser simultan\u00e9ment deux cam\u00e9ras sur le robot. Ce tutoriel pr\u00e9sente les \u00e9tapes n\u00e9cessaires pour configurer et utiliser deux cam\u00e9ras avec le robot MR25, ainsi que la r\u00e9alisation de captures d\u2019images avec chacune d\u2019elles. D\u00e9tecter &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105],"tags":[],"class_list":["post-3743","post","type-post","status-publish","format-standard","hentry","category-mr25-robot"],"_links":{"self":[{"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/posts\/3743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3743"}],"version-history":[{"count":4,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/posts\/3743\/revisions"}],"predecessor-version":[{"id":3747,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/posts\/3743\/revisions\/3747"}],"wp:attachment":[{"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}