Il s'agit d'un exemple simple pour générer des images 2D de surfaces cylindriques, en utilisant le principal de la photographie de déploiement ou du scanner à fente .
Ce package a deux fonctions majeures: la capture de nouvelles vidéos et le traitement des flux vidéo. Il peut également être utilisé sous deux formes: en tant qu'interface de ligne de commande (CLI), ou en tant que package Python. Le script CLI montre des exemples de la façon dont il peut être utilisé dans vos propres scripts Python.
Le code n'a été testé et confirmé pour fonctionner sur un système d'exploitation Linux, mais il peut fonctionner sur d'autres.
Installer à l'aide de PIP:
pip install git+git://github.com/NaturalHistoryMuseum/revile.git#egg=revile
La caméra doit être diffusée à partir d'un périphérique /dev/video
. Cela peut ne pas être possible avec toutes les caméras; Vérifiez vos spécifications. Pour une caméra connectée via USB avec un mode d'aperçu disponible, vous pouvez le faire à l'aide de v4l2loopback
. Après avoir installé v4l2loopback
:
modprobe v4l2loopback
find /dev -name ' video* ' | sort | tail -n 1 # to find the device
gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 8 -r 60 -f v4l2 /dev/video[DEVICE NUMBER HERE]
revile video --help
Usage: revile video [OPTIONS]
Takes a video and spins the motor at the same time, then processes the
frames of the video file.
Options:
-l, --length INTEGER The length of the video/rotation (in seconds).
--servo Use a servo instead of a stepper motor
-o, --outputdir TEXT
-r, --rotation INTEGER angle (in degrees clockwise) of the camera from
horizontal ; will be rounded to the nearest multiple
of 90
par exemple pour créer et traiter une vidéo 20S, puis les enregistrer dans /data/videos
:
revile video --length 20 --outputdir /data/videos
revile stream --help
Usage: revile stream [OPTIONS]
Uses the preview frames from a camera connected in USB mode to create the
image.
Options:
-f, --frames INTEGER The number of frames to capture (also ; the width of
the final image).
--stream-port INTEGER The /dev/video device to read from.
--servo Use a servo instead of a stepper motor
par exemple pour créer et traiter 500 images à l'aide de Device /dev/video1
:
revile stream --frames 500 --stream-port 1
revile estimate --help
Usage: revile estimate [OPTIONS] DIAMETER
Estimate the optimum length of rotation in frames and seconds.
Options:
-l, --focal-length INTEGER Focal length in mm
-x, --frame-x INTEGER Size of the image/frame across the x axis of the
vial (i.e. width if shooting landscape, height
if portrait) in pixels
-s, --sensor-x INTEGER Size of the sensor across the x axis of the vial
(i.e. width if shooting landscape, height if
portrait) in mm
-w, --ppmm INTEGER Approximate width of 1mm, in pixels, at the
centre of rotation
-r, --fps INTEGER Stream/video framerate
Par exemple, à une distance focale de 100 mm, une largeur de cadre de 720px, une largeur du capteur de 24 mm, une largeur de 1 mm de 21px et une catégorie de 60fps, pour un flacon de 20 mm:
revile estimate -l 100 -x 720 -s 24 -w 21 -r 60 20
Try 23.6 seconds or 1419 frames:
revile video --length 23.6
revile stream --frames 1419
Il n'y a pas d'exigences supplémentaires pour le traitement des fichiers / flux vidéo.
revile process --help
Usage: revile process [OPTIONS] FILEPATH
Options:
-r, --rotate INTEGER angle (in degrees clockwise) of the image from
horizontal ; will be rounded to the nearest multiple of
90
-o, --outputdir TEXT A directory to save the files to
par exemple pour traiter examplevideo.mov
, tourné dans l'orientation du portrait et sortie vers /data/revile/
:
revile process examplevideo.mov -r 270 -o /data/revile