diy:projets:panorama
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
diy:projets:panorama [2018/05/24 11:25] – gbouyjou | diy:projets:panorama [2018/05/24 12:06] – gbouyjou | ||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
leurs camera pour pouvoir avoir une vue panoramique, | leurs camera pour pouvoir avoir une vue panoramique, | ||
- | La seule solution possible étant d' | + | La seule solution possible étant d' |
qu'on peut trouver généralement avec des **kit** du raspberry pi.\\ | qu'on peut trouver généralement avec des **kit** du raspberry pi.\\ | ||
- | {{ : | + | {{ : |
- | En premier lieu on montrera comment | + | |
+ | En premier lieu on montrera comment | ||
+ | \\ | ||
+ | ensuite j' | ||
**servo moteurs** peuvent tirer beaucoup d' | **servo moteurs** peuvent tirer beaucoup d' | ||
- | Puis apres ça je présenterais un petit code shell nommé [[https:// | + | Puis apres ça je présenterais un petit [[diy: |
+ | |||
+ | Puis pour finir l' | ||
+ | on pourra spécifier le mode de rendu du panorama : | ||
+ | * Cylindrique | ||
+ | * Sphérique (par default) | ||
+ | * Stéréographique | ||
+ | * et pleins d' | ||
\\ | \\ | ||
Ligne 22: | Ligne 32: | ||
[[https:// | [[https:// | ||
+ | |||
+ | |||
Ligne 31: | Ligne 43: | ||
\\ | \\ | ||
- | //Prenons ces deux photos pour entrainement// | + | //Prenons ces deux photos pour entrainement |
{{: | {{: | ||
Ligne 37: | Ligne 49: | ||
\\ | \\ | ||
- | //On peut visionner ces formes de cette façon en python// | + | //On peut visionner ces **formes** de cette façon en python// |
<code python> | <code python> | ||
img =cv2.imread(' | img =cv2.imread(' | ||
Ligne 87: | Ligne 99: | ||
Puis on peut utiliser le code decrit dans ce tuto pour fusionner les deux images | Puis on peut utiliser le code decrit dans ce tuto pour fusionner les deux images | ||
[[https:// | [[https:// | ||
+ | |||
+ | |||
Ligne 94: | Ligne 108: | ||
On souhaite faire un panorama 360° avec des photos prise par la camera du rpi, on aurrait pu utiliser | On souhaite faire un panorama 360° avec des photos prise par la camera du rpi, on aurrait pu utiliser | ||
- | plusieurs rpi cote à cote, avec des inclinaisons differentes, | + | plusieurs rpi cote à cote, avec des inclinaisons differentes, |
permettra d' | permettra d' | ||
+ | |||
+ | ==== Montage électrique ==== | ||
\\ | \\ | ||
Ligne 105: | Ligne 121: | ||
{{ : | {{ : | ||
{{ : | {{ : | ||
+ | |||
+ | |||
+ | ==== Expliquation du PWM (utilisation des servos) ==== | ||
+ | [[https:// | ||
+ | |||
+ | Le [[https:// | ||
+ | d' | ||
+ | |||
+ | Par exemple si je veux un signal carré parfait (sinus carré) peut importe la fréquence fixé, | ||
+ | je fixe le rapport cyclique à 50%, et donc la durée de l' | ||
+ | |||
+ | \\ | ||
+ | //En python on demande a un **gpio** du raspberry de fonctionner en **PWM** de cette façon :// | ||
+ | <code python> | ||
+ | pwm =GPIO.PWM(pinDuGpio, | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | //Puis on fixe le **rapport cyclique** :// | ||
+ | <code python> | ||
+ | pwm.start(20) | ||
+ | </ | ||
+ | |||
+ | Le problème et que on ne connait pas à l' | ||
+ | de s'axer idéalement sur 180 degrés. | ||
+ | |||
+ | \\ | ||
+ | //Donc je propose un code python permettant de régler cela// | ||
+ | <code python> | ||
+ | def findMechanicalStop(): | ||
+ | middle=10 | ||
+ | |||
+ | hPwm =GPIO.PWM(hPin, | ||
+ | vPwm =GPIO.PWM(vPin, | ||
+ | # stop=False | ||
+ | # while (not stop): | ||
+ | # pos -=1 | ||
+ | # hPwm.start(pos) | ||
+ | # | ||
+ | # #ret =ord(raw_input(" | ||
+ | # ret =ord(sys.stdin.read(1)) | ||
+ | # print(ret) | ||
+ | |||
+ | # | ||
+ | stdscr = curses.initscr() | ||
+ | curses.noecho() | ||
+ | stdscr.nodelay(1) # set getch() non-blocking | ||
+ | |||
+ | stdscr.addstr(0, | ||
+ | line = 1 | ||
+ | |||
+ | toes =[" | ||
+ | pwms =[vPwm, vPwm, hPwm, hPwm] | ||
+ | values =[0, 0, 0, 0] | ||
+ | sens =[-1, 1, -1, 1] | ||
+ | for i in range(4): | ||
+ | pos=middle | ||
+ | |||
+ | try: | ||
+ | while (1): | ||
+ | c = stdscr.getch() | ||
+ | if c == 10: | ||
+ | values[i] =round(pos, 2) | ||
+ | break | ||
+ | elif c == 32: | ||
+ | print(" | ||
+ | pos =pos +sens[i] *5 | ||
+ | else: | ||
+ | pos =pos +sens[i] *0.1 | ||
+ | |||
+ | stdscr.addstr(line, | ||
+ | pwms[i].start(pos) | ||
+ | |||
+ | time.sleep(0.1) | ||
+ | |||
+ | |||
+ | finally: | ||
+ | curses.endwin() | ||
+ | |||
+ | for i in range(4): | ||
+ | print(toes[i], | ||
+ | </ | ||
Ligne 155: | Ligne 253: | ||
On peut prendre des photos avec une inclinaisons autours de l'axe horizontal de 0 et 45 degre | On peut prendre des photos avec une inclinaisons autours de l'axe horizontal de 0 et 45 degre | ||
tout autour de l'axe vertical d'un pas de 45 degre avec le code suivant, en n' | tout autour de l'axe vertical d'un pas de 45 degre avec le code suivant, en n' | ||
+ | |||
+ | |||
+ | ==== Prendre des photos en mode panoramique ==== | ||
Voici le **script shell** utilisant le programme python pour prendre des photos en mode panoramique. | Voici le **script shell** utilisant le programme python pour prendre des photos en mode panoramique. | ||
Ligne 190: | Ligne 291: | ||
{{youtube> | {{youtube> | ||
- | ---- | ||
+ | |||
+ | |||
+ | ---- | ||
===== Utilisation de stitching.cpp | ===== Utilisation de stitching.cpp | ||
diy/projets/panorama.txt · Dernière modification : 2018/05/24 13:07 de gbouyjou