Jak zrobić ostre zdjęcie za pomocą mojej kamery iSight z wiersza poleceń?

27

Czy istnieje narzędzie wiersza polecenia, które pozwala mi zrobić zdjęcie z wbudowanego aparatu? Coś w rodzaju screencapture pozwala na przechwytywanie ekranu.

Powodem, dla którego narzędzie wiersza poleceń jest takie, chciałbym, aby było niewidoczne, bez odliczania, flashowania lub innego wskazania użytkownikowi, że zdjęcie jest robione.

dakrakot
źródło
1
Spójrz na kod źródłowy dla preyproject.com - robią to ze swoją aplikacją, a kod jest open source.
Ian C.
3
Pamiętaj, że zielona dioda LED obok iSight uaktywni się na krótko, gdy kamera zarejestruje obraz.
da4

Odpowiedzi:

31

Użyj imagesnap . Można go zainstalować z brew install imagesnaplub pobrać plik binarny ze strony internetowej.

Jednym z zastosowań jest zrobienie serii migawek:

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

Nie przycina też zdjęć w poziomie. (Photo Booth zmienia proporcje obrazu na 3: 2).

Lri
źródło
5
Pamiętaj też, że imagesnapma -tflagę do robienia zdjęć co x.xxsekundę. Aby pętla while mogła zostać zastąpiona imagesnap -t 1; chociaż w tym przypadku imagesnapwygeneruje własną nazwę pliku (np snapshot-00000-2015-07-23_10-36-52.853.jpg.).
tbekolay
jeśli planujesz używać imagesnapprzez ssh, będziesz potrzebować uprawnień sudo. Używam go do odprawiania moich kotów.
Ritwik Bose
7

OS X nie zawiera żadnych narzędzi do tego celu.

Rozwiązaniem innej firmy jest imagesnap . Umożliwia przechwytywanie obrazu z dowolnego podłączonego urządzenia wideo, domyślnie z wbudowaną kamerą iSight. Jest dostępny jako pojedynczy plik binarny, który można spakować z oprogramowaniem, i jest udostępniany jako domena publiczna.

W Internecie istnieje wiele odniesień do narzędzia iSightCapture , które było popularnym wyborem, ale nie jest już utrzymywane.

Jeremy Banks
źródło
Coś natywnego?
dacracot
@dacracot Niestety Apple nie dostarczył czegoś takiego.
Jeremy Banks
6

Niestety imagesnapwydaje się, że nie działa już na OSX10.11 / El Capitan, więc inną alternatywą jest zainstalowanie ffmpeg (MacPorts: port install ffmpeglub brew install ffmpeg) i uruchomienie:

ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i "0" -vframes 1 out.jpg
Pierz
źródło
5

Natywnie istnieje sposób, ale jest on bardzo prosty. Za pomocą Automatora można utworzyć aplikację, która robi zdjęcie. Działanie nosi nazwę „Wykonaj migawkę wideo” i wymaga „wbudowanej kamery, iSight lub innej kamery internetowej lub aparatu cyfrowego podłączonego do komputera”. Po prostu zaznacz pole wyboru take picture automaticallyi masz teraz aplikację, do której możesz zadzwonić z wiersza poleceń. Zapisz go jako aplikację, a następnie możesz wywołać go z wiersza polecenia, np open TakePicture.app.

Zrób migawkę wideo

styfle
źródło
Próbowałem tego i zadziałało, ale liczyłem na coś bardziej ukrytego.
dacracot
@dacracot Myślałem tak samo. Jak powiedziałem, jest to jedyny natywny sposób, jaki znam, więc jeśli chcesz ukryć się, musisz wybrać trudną drogę.
styfle
5

Jak wspomniano w innym plakacie, istnieje narzędzie o nazwie iSightCapture, które może to zrobić.

Kiedyś napisałem skrypt, aby okresowo pobierać obraz iSight i chwycić moje dwa monitory i opublikować go na prywatnej stronie internetowej, aby zobaczyć, co się dzieje na moim komputerze. Oto jak napisałem skrypt iSightCapture, aby to zrobić.

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

Zwróć uwagę na użycie „łyków” do odwracania przechwytywania wartości w poziomie.

Działający link do pobrania (2012-10-05): iSightCapture ( via ), przetestowany na OSX 10.8.2

jmhindle
źródło