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ć?

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

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.


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.