User avatar
panpan
Posts: 9
Joined: Thu May 09, 2013 2:32 pm
Location: Paris, France
Contact: Website

Pi Camera - afficher le flux vidéo avec un calque / overlay

Tue May 30, 2017 8:09 pm

Bonjour à tous,
je commence par présenter mon projet, avant de rentrer dans le vif de mon sujet.
Aussi, j'ai déjà recherché — mais je n'ai pas trouvé de réponse précise dans le forum, ou de conseil satisfaisant — même en anglais.

je travaille actuellement sur un projet expérimental, dans un cadre pédagogique (avec des collégiens) et associatif.
On fabrique une sorte de photomaton sur un arc de cercle, multi-caméras (19 pi caméra v2 en tout)
basé sur 9x Compute Module en dual-cam + un module pi3 master reliée à la pi-camera du centre de l'arc de cercle

voici notre journal de bord :
http://notes.polyptyque.photo/
http://notes.polyptyque.photo/2017/04/2 ... ocket.html

et voici notre github :
https://github.com/polyptyque

Afficher une mire par dessus la pré-visualisation pour que l’utilisateur soit bien « à la bonne place » ...

Notre prise de vues intégrant une dimension spatiale, nous souhaitons assister l’utilisateur dans son positionnement face à la caméra.
Pour cela, ça sera déjà la position du tabouret qui va faire beaucoup. Mais nous souhaitons d’avantage.

Nous avons donc pensé au principe de « mire » — que nous pouvons réaliser de manière très low-tech avec un miroir proche de la caméra, en dessinant les repères sur celui-ci.

Mais nous envisagions une version plus numérique de cette mire, avec un retour caméra direct sur l’écran du rPi3.
Cela me paraissait simple dans son énonciation :
  • afficher le flux d’images en direct
    (sans utiliser le mécanisme de preview natif à pi camera, qui ne permet pas d’overlay)
    avec une vitesse de rafraichissement élevée (>=15fps) et une latence réduite (<=1/2s)
  • afficher un calque de repères statiques par dessus cette preview
    (une image PNG transparente fera l’affaire)
  • afficher tout ça en plein écran
Nos conditions actuelles sont :
  • raspberry Pi 3 / raspbian jessie
  • Pi Camera V2
  • TouchScreen TFT 7"
  • Python3
J'ai déjà regardé quelques pistes avec OpenCV, Pygame, Tkinter, etc.
Mais ça me semble toujours assez lourd à installer, (j’ai déjà un peu échoué différentes méthodes...) je me demande donc si je n'ai pas raté un truc...

Je suis donc preneur de retour d’expérience sur cette problématique GUI / python / Pi Camera ...

merci d’avance,
Arthur.

User avatar
panpan
Posts: 9
Joined: Thu May 09, 2013 2:32 pm
Location: Paris, France
Contact: Website

Re: Pi Camera - afficher le flux vidéo avec un calque / over

Tue May 30, 2017 10:24 pm

je viens de lire ceci...

http://picamera.readthedocs.io/en/relea ... dd_overlay

et j’ai adapté pour que ça fonctionne avec python3

Code: Select all

import picamera
from PIL import Image
from time import sleep

with picamera.PiCamera() as camera:
    camera.resolution = (1280, 720)
    camera.framerate = 24
    camera.start_preview()

    # Load the arbitrarily sized image
    img = Image.open('overlay-400-240.png')
    # Create an image padded to the required size with
    # mode 'RGB'
    width = ((img.size[0] + 31) // 32) * 32
    height = ((img.size[1] + 15) // 16) * 16
    print("pad size",width,height)
    pad = Image.new('RGBA', (width,height))
    # Paste the original image into the padded one
    pad.paste(img, (0, 0))
    print("img size",img.size)
    # Add the overlay with the padded image as the source,
    # but the original image's dimensions
    #b = img.tobytes('rgba')    
    b = pad.tobytes()
    o = camera.add_overlay(b, size=img.size)
    print(camera)
    # By default, the overlay is in layer 0, beneath the
    # preview (which defaults to layer 2). Here we make
    # the new overlay semi-transparent, then move it above
    # the preview
    #o.alpha = 128
    o.layer = 3

    # Wait indefinitely until the user terminates the script
    while True:
        sleep(1)
ça fait ce que je demande !
sauf que l'image est ajustée en full screen (alors qu'elle en fait la moitié)

User avatar
panpan
Posts: 9
Joined: Thu May 09, 2013 2:32 pm
Location: Paris, France
Contact: Website

Re: Pi Camera - afficher le flux vidéo avec un calque / over

Tue May 30, 2017 10:36 pm

Pour ceux qui veulent voir ce que ça donne

j'ai fait une vidéo
Image


Mais je suis toujours preneur de solutions alternatives,
sachant que j'aimerai idéalement rajouter d’autres fonctionnalités :
  • boutons / interaction via touchscreen
  • messages / status

Cyborg21
Posts: 3
Joined: Mon Jan 11, 2016 7:32 pm

Re: Pi Camera - afficher le flux vidéo avec un calque / overlay

Thu Nov 09, 2017 6:23 pm

Bonsoir,
Ce post date un peu et j'espère que vous avez trouver une solution.
Pour ma part, j'utilise Opencv3 pour afficher pleins d'informations en overlay et ça fonctionne plutôt bien.
C'est effectivement un peu long à installer comme librairie, mais d'une puissance redoutable.

La seule solution actuelle pour moi, pou réussir à faire de l'overlay est de convertir l'image an matrice (array). Ainsi, chaque point de la matrice peut être modifié à loisir.

Cyb

Return to “Français”

Who is online

Users browsing this forum: No registered users and 8 guests