¿Cómo tomo una foto sigilosa con mi cámara iSight desde la línea de comandos?

¿Existe una utilidad de línea de comandos que me permita tomar una foto desde la cámara integrada? Algo así como la captura de pantalla permite, bueno, capturas de pantalla.

El razonamiento para una herramienta de línea de comandos es que me gustaría que fuera sigilosa, sin una cuenta regresiva o flash u otra indicación para el usuario de que se está tomando una foto.

Eche un vistazo al código fuente de preyproject.com : hacen estas cosas con su aplicación y el código es de código abierto.
Recuerde que el LED verde junto a la iSight se activará brevemente cuando la cámara grabe la imagen.

Respuestas (5)

Usa imágenes instantáneas . Se puede instalar con brew install imagesnapo descargando el binario del sitio web.

Uno de sus usos es tomar una serie de instantáneas:

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

Tampoco recorta las imágenes horizontalmente. (Photo Booth cambia la relación de aspecto a 3:2).

También tenga en cuenta que imagesnaptiene una -tbandera para tomar una foto cada x.xxsegundo. Entonces ese ciclo while podría ser reemplazado con imagesnap -t 1; aunque, en este caso, imagesnapgenerará su propio nombre de archivo (por ejemplo, snapshot-00000-2015-07-23_10-36-52.853.jpg).
si planea usar a imagesnaptravés de ssh, necesitará privilegios de sudo. Lo uso para controlar a mis gatos.

OS X no viene con ninguna utilidad para este propósito.

Una solución de terceros es imagesnap . Le permite capturar una imagen desde cualquier dispositivo de video conectado, por defecto a la cámara iSight incorporada. Está disponible como un único archivo binario que puede incluir con su software y se publica en el dominio público.

Hay muchas referencias en Internet a la utilidad iSightCapture , que solía ser una opción popular para esto, pero ya no se mantiene.

¿Algo nativo?
@dacracot Desafortunadamente, Apple no ha proporcionado nada como esto.
Lo que es realmente extraño es que Automator proporciona una acción para tomar una foto, ¡pero no reconoce la iSight como una cámara válida!

Lamentablemente imagesnap, parece que ya no funciona en OSX10.11/El Capitan, por lo que otra alternativa es instalar ffmpeg (MacPorts: port install ffmpego brew install ffmpeg) y ejecutar:

ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i "0" -vframes 1 out.jpg
Parece estar funcionando ahora en Catalina (10.15.6), lo único es que en la primera ejecución requiere que el terminal reciba el permiso para usar la cámara.

Nativamente, hay una manera, pero es extremadamente básica. Puede usar Automator para hacer una aplicación que tome una foto. La acción se llama "Tomar instantánea de video" y requiere una "cámara integrada, iSight u otra cámara web, o una cámara digital conectada a su computadora". Simplemente marque la casilla take picture automaticallyy ahora tiene una aplicación a la que puede llamar desde la línea de comandos. Guárdelo como una aplicación y luego puede llamarlo desde la línea de comando como open TakePicture.app.

Tomar instantánea de video

Intenté esto y funcionó, pero esperaba algo más sigiloso.
@dacracot Me lo imaginé. Como dije, esta es la única forma nativa que conozco, así que tendrás que ir por la ruta difícil si quieres sigilo.

Como mencionó otro cartel, hay una utilidad llamada iSightCapture que puede hacer esto.

Una vez escribí un script para capturar periódicamente una imagen iSight y una captura de mis dos monitores y publicarla en un sitio web privado para poder ver lo que sucede en mi computadora. Así es como programé iSightCapture para hacerlo.

#!/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

Tenga en cuenta el uso de 'sorbos' para voltear la captura de iSight horizontalmente.

Un enlace de descarga que funciona (2012-10-05): iSightCapture ( vía ), probado en OSX 10.8.2