Zrób zdjęcie z terminala

58

Chcę móc zrobić zdjęcie za pomocą kamery internetowej z terminala. Ten obraz zostanie następnie zapisany w pliku. Jak można to zrobić?

Luis Alvarado
źródło

Odpowiedzi:

32

Jeśli szukasz czegoś zautomatyzowanego, webcamjest całkiem przyzwoite. Ma wiele uroczych opcji przesyłania zdjęć przez Internet.

Jeśli potrzebujesz czegoś bardziej ręcznego, a mówimy o kamerze obsługiwanej przez V4L / UVC (większość z nich), której możesz użyć streamerdo przechwytywania ramki z urządzenia:

streamer -f jpeg -o image.jpeg
Oli
źródło
Dzięki Oli. Nie wiedziałem, że istnieje program kamery internetowej o nazwie WEBCAM (Ironia ...). I tak, kamera internetowa znajduje się na liście obsługiwanych wersji V4L.
Luis Alvarado
46

Istnieje inna aplikacja, której można użyć do przechwytywania obrazów z kamery internetowej o nazwie Fswebcam . możesz to zainstalować za pomocą

sudo apt-get install fswebcam

możesz wykonać próbny strzał za pomocą następującego polecenia.

fswebcam -r 640x480 --jpeg 85 -D 1 web-cam-shot.jpg

W powyższej składni kodu -roznacza rozdzielczość obrazu, --jpegoznacza typ formatu obrazu, a 85jego standard jakości -Doznacza opóźnienie ustawione przed przechwyceniem.

Teraz twój obraz został ostatecznie zapisany pod nazwą web-cam-shot.jpg.

Mam nadzieję, że to pomaga.

rɑːdʒɑ
źródło
9
W moim przypadku, moja maszyna testowa, musiałam pomijać klatki, aby uzyskać właściwy obraz. Jeśli zrobię pierwsze klatki, zdjęcie jest bardzo ciemne, ponieważ aparat nie był jeszcze gotowy. fswebcam -r 640x480 --jpeg 100 -D 3 -S 13 fswebcam.jpg
msmafra
@ tenshimsm Spędziłem 10 minut zastanawiając się, co było nie tak z moją kamerą fswebcam, a następnie usunąłem pakiet. Zainstalowałem go ponownie, aby wypróbować twoje podejście, 30 klatek działało dla mnie. Dzięki :)
Chirag Bhatia - chirag64
Z moją najnowszą kamerą Sodial za 5,99 € avconvdziała lepiej.
Avio
to, co uznaję za pomocne, to: v4lctl bright 50% # apt-get install xawtv
Grzegorz
--no-banner (usuwa dolny baner ze znacznikiem czasu)
João Cartucho
20

Za pomocą avconvlub ffmpegmożesz także przechwycić ramkę z urządzenia. Na przykład:

avconv -f video4linux2 -s 640x480 -i /dev/video0 -ss 0:0:2 -frames 1 /tmp/out.jpg

lub

ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 -ss 0:0:2 -frames 1 /tmp/out.jpg

Otworzy się to /dev/video0jako video4linux2kompatybilne urządzenie, ustawi rozdzielczość 640x480, przesyła strumieniowo przez 2 sekundy ( 00:00:02lub po prostu 2), a następnie przechwytuje onepojedynczą klatkę, zapisując ją /tmp/out.jpg.

Sprawdź, czy Twoje urządzenie jest /dev/video0, ponieważ może być inne.

Dostępne rozdzielczości zależą od kamery internetowej. Mój idzie do 640x480 i sprawdziłem to za pomocą narzędzia o nazwie qv4l2, które służy do konfiguracji urządzenia video4linux2.

Ten -ssparametr umożliwia prawidłowe uruchomienie urządzenia. Tutaj, w moich testach, efekt włączania pojawia się podczas włączania aparatu, więc jeśli tylko pominę -ss 2, przechwycona klatka będzie bardzo ciemna.

Alexandre Schmidt
źródło
Wolałem to rozwiązanie, ponieważ już zainstalowałem avconv. Również wyjście avconv daje wskazówki dotyczące maksymalnej rozdzielczości, ponieważ sterownik v4l pokazuje, czy musi wrócić do niższej specyfikacji.
woda lodowa
10

Możesz także spróbować uvccapture .

uvccapture -m
Bibhas
źródło