Ini adalah paket contoh sederhana untuk menghasilkan gambar 2D permukaan silindris, menggunakan prinsipal fotografi rollout atau pemindaian celah .
Paket ini memiliki dua fungsi utama: menangkap video baru, dan memproses aliran video. Ini juga dapat digunakan dalam dua bentuk: sebagai antarmuka baris perintah (CLI), atau sebagai paket Python. Skrip CLI menunjukkan contoh bagaimana hal itu dapat digunakan dalam skrip python Anda sendiri.
Kode ini hanya diuji dan dikonfirmasi untuk bekerja pada OS Linux, tetapi dapat bekerja pada orang lain.
Instal menggunakan PIP:
pip install git+git://github.com/NaturalHistoryMuseum/revile.git#egg=revile
Kamera harus streaming dari perangkat /dev/video
. Ini mungkin tidak mungkin dengan semua kamera; Periksa spesifikasi Anda. Untuk kamera yang terhubung melalui USB dengan mode pratinjau yang tersedia, Anda dapat melakukan ini menggunakan v4l2loopback
. Setelah menginstal 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
misalnya untuk membuat dan memproses video 20S, lalu simpan di /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
misalnya untuk membuat dan memproses 500 frame menggunakan perangkat /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
misalnya pada panjang fokus 100mm, lebar bingkai 720px, lebar sensor 24mm, lebar 1mm 21px, dan framerate 60fps, untuk botol 20mm:
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
Tidak ada persyaratan tambahan untuk memproses file/stream video.
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
misalnya untuk memproses examplevideo.mov
, diambil dalam orientasi potret, dan output ke /data/revile/
:
revile process examplevideo.mov -r 270 -o /data/revile