Comment prendre une photo stable avec ma caméra iSight depuis la ligne de commande?

27

Existe-t-il un utilitaire de ligne de commande qui me permet de prendre une photo à partir de l'appareil photo intégré? Quelque chose comme la capture d'écran permet, bien, des captures d'écran.

Le raisonnement pour un outil en ligne de commande est que je voudrais qu'il soit furtif, sans compte à rebours ou flash ou autre indication à l'utilisateur qu'une photo est en train d'être prise.

dacracot
la source
1
Jetez un oeil au code source de preyproject.com - ils font ce genre de choses avec leur application et le code est open source.
Ian C.
3
N'oubliez pas que la LED verte à côté de l'iSight s'activera brièvement lorsque la caméra enregistrera l'image.
da4

Réponses:

31

Utilisez imagesnap . Il peut être installé avec brew install imagesnapou en téléchargeant le binaire à partir du site Web.

Une utilisation pour cela est de prendre une série d'instantanés:

while :; do
    imagesnap ~/Desktop/$(date +%y%m%d%H%M%S).png
    sleep ${1-1}
done

Il ne recadre pas non plus les images horizontalement. (Photo Booth modifie le rapport d'aspect à 3: 2.)

Lri
la source
5
Notez également que imagesnappossède un -tdrapeau pour prendre une photo toutes les x.xxsecondes. Pour que la boucle while puisse être remplacée par imagesnap -t 1; cependant, dans ce cas, imagesnapgénérera son propre nom de fichier (par exemple snapshot-00000-2015-07-23_10-36-52.853.jpg).
tbekolay
si vous prévoyez d'utiliser imagesnapvia ssh, vous aurez besoin des privilèges sudo. Je l'utilise pour enregistrer mes chats.
Ritwik Bose
7

OS X n'est fourni avec aucun utilitaire à cet effet.

Une solution tierce est imagesnap . Il vous permet de capturer une image à partir de n'importe quel appareil vidéo connecté, par défaut à la caméra iSight intégrée. Il est disponible sous la forme d'un fichier binaire unique que vous pouvez regrouper avec votre logiciel et est publié dans le domaine public.

Il existe de nombreuses références sur Internet à l' utilitaire iSightCapture , qui était un choix populaire pour cela, mais il n'est plus maintenu.

Jeremy Banks
la source
Quelque chose de natif?
dacracot
@dacracot Malheureusement, Apple n'a rien fourni de tel.
Jeremy Banks
6

Malheureusement, il imagesnapne semble plus fonctionner sur OSX10.11 / El Capitan, une autre alternative consiste à installer ffmpeg (MacPorts: port install ffmpegou brew install ffmpeg) et à exécuter:

ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i "0" -vframes 1 out.jpg
Pierz
la source
5

Nativement, il y a un moyen mais c'est extrêmement basique. Vous pouvez utiliser Automator pour créer une application qui prend une photo. L'action est appelée "Prendre un instantané vidéo" et nécessite une "caméra intégrée, iSight ou autre webcam, ou un appareil photo numérique connecté à votre ordinateur". Cochez simplement la case à take picture automaticallyet vous avez maintenant une application que vous pouvez appeler à partir de la ligne de commande. Enregistrez-le en tant qu'application, puis vous pouvez l'appeler à partir de la ligne de commande comme open TakePicture.app.

Prendre un instantané vidéo

styfle
la source
J'ai essayé ça et ça a marché, mais j'espérais quelque chose de plus furtif.
dacracot
@dacracot je pensais autant. Comme je l'ai dit, c'est la seule façon native que je connaisse, vous devrez donc emprunter la voie difficile si vous voulez la furtivité.
styfle
5

Comme l'a mentionné une autre affiche, il existe un utilitaire appelé iSightCapture qui peut le faire.

J'ai écrit une fois un script pour récupérer périodiquement une image iSight et une capture de mes deux moniteurs et la publier sur un site Web privé afin que je puisse voir ce qui se passe sur mon ordinateur. Voici comment j'ai écrit iSightCapture pour le faire.

#!/bin/bash
~/scripts/isightcapture -w 320 -h 240 -t jpg ~/capture.jpg 
RESULT=$?
if [ $RESULT -ne 0 ]; then
    growlnotify -s -a FaceTime -m "isightcapture failed ($RESULT)" $0
    exit 1
else
    sips -f horizontal ~/capture.jpg
fi

screencapture -S -tjpg ~/scr1.jpg ~/scr2.jpg 
RESULT=$?
if [ $RESULT -ne 0 ]; then
    growlnotify -s -a FaceTime -m "screencapture failed ($RESULT)" $0
    exit 2
else 
    sips -z 240 320 ~/scr1.jpg 
    sips -z 240 320 ~/scr2.jpg
fi
exit 0

Notez l'utilisation de «gorgées» pour retourner horizontalement la capture d'image.

Un lien de téléchargement fonctionnel (05/10/2012): iSightCapture ( via ), testé sur OSX 10.8.2

jmhindle
la source