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.