Existe um captador de imagens da webcam CLI que funcione com um dispositivo video4linux2?

8

Eu tentei de tudo

apt-cache search webcam |sort -u

e tudo tem algum problema. Corrigir qualquer erro de sintaxe, mostrando como usar uma "GUI only" da CLI ou um bom liner ffmpeg / mencoder / vlc, responderia à minha pergunta. Ou desde que eu sei como fazer o ffmpeg usar um MJPEG curto, mostrando como tirar o primeiro jpeg funcionaria, eu acho. Ainda assim, isso deve ser mais direto do que isso.

$ camgrab
/dev/video0: no v4l device

(o camgrab provavelmente não suporta v4l2)

$ fswebcam --list-inputs
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
--- Available inputs:
0: Camera 1
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Premature end of JPEG file
Captured frame in 0.00 seconds.
--- Processing captured image...
There are unsaved changes to the image.
$ fswebcam --input 0 boo.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.jjjjjjjjj
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Premature end of JPEG file
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'boo.jpg'.

produz isso

$ motion

está além de mim.

$ uvccapture -oboo.jpg 
$ file boo.jpg        
boo.jpg: data
$ qiv -t boo.jpg 
Unable to read file: Failed to load image 'boo.jpg': Error interpreting JPEG image file (Not a JPEG file: starts with 0x8f 0x5a)

não é realmente uma imagem.

$ /usr/bin/vgrabbj -d /dev/video0 -f boo.jpg
Could not open configfile /usr/etc/vgrabbj.conf, ignoring
Reading image from /dev/video0

produz isso

$ webcamd
RTFM, missing template (/home/$USER/.webcamd/index_up.html)
$ man webcamd |cat
WEBCAMD(1)                                                                     WEBCAMD(1)
NAME
    webcamd - Take a image from your webcam
SYNOPSIS
    webcamd [ start | stop | refresh ]
DESCRIPTION
    This manual page documents briefly the webcamd daemon.
    This manual page was written for the Debian distribution because the original pro‐
    gram does not have a manual page.
    webcamd is a program that take images from your webcam and put it on a ftp  server
    on a local (web) directory
OPTIONS
    start  Start the daemon.
    stop   Stop the daemon.
    refresh Take a shot !
AUTHOR
    This  manual  page  was  written by Julien Danjou <[email protected]> for the Debian
    system (but may be used by others).  Permission is  granted  to  copy,  distribute
    and/or modify this document under the terms of the GNU Free Documentation License,
    Version 1.1 or any later version published by the Free Software  Foundation;  with
    no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts.
                                  2002 april 21                            WEBCAMD(1)
$ webcamd start
RTFM, missing template (/home/$USER/.webcamd/index_up.html)
$ webcamd refresh
RTFM, missing template (/home/$USER/.webcamd/index_up.html)

a webcam parece exigir que eu defina um arquivo de configuração para ftp as imagens em algum lugar e parece não fazer nada por padrão

$ /usr/bin/webcam 
reading config file: /home/$USER/.webcamrc
video4linux webcam v1.5 - (c) 1998-2002 Gerd Knorr
grabber config:
  size 320x240 [none]
  input (null), norm (null), jpeg quality 75
  rotate=0, top=0, left=0, bottom=240, right=320
  • Apenas GUI
    • camorama
    • queijo
    • kamoso
    • luvcview
John Baber-Lucero
fonte
webcamd é uma piada Tudo o que faz é este / usr / bin / v4lctl -c / dev / video0 snap jpeg 160x120 ~ / .webcamd / webcam.jpg Ao ler o código, este é o formato de configuração #section common <common> # Intervalo entre fotos (importante ou entra em um loop infinito) inter = 60 www_path = / tmp / www enable_ftp = nenhuma webcam_resolution = 320x200 # / dev / é anexada a este dispositivo = video0 #section picture <picture> put_date = no font = arial fontsize = 12 = fontcolor disp_box preto = no boxcolor = borda preta = yes bordercolor = #section preto ftp <ftp> host = localhost usuário = porta teknopaul = 999 password = diretório foo = / tmp
teknopaul
hmm não pode entrar em novas linhas
teknopaul 28/11

Respostas:

9

A partir daqui

Streamer

Streamer (http://linux.bytesex.org/xawtv/) is a versatile program that allows a
capture from a webcam or video device using only the command line. It may be offered 
in your Linux distribution's Xawtv package. To install streamer try

# sudo apt-get install xawtv

To take a standard JPEG picture from the command line where the camera is accessed 
through /dev/video0:

#streamer -c /dev/video0 -b 16 -o outfile.jpeg

Where > -b is the number of colors (in bpp,whether 15, 16, 24 or 32)
& -o is the output filename in the current directory

If you are going to capture multiple images be sure to append the output file name 
with zeros, as streamer can name the capture files in sequence, i.e., -o 
outfile000.jpeg becomes outfile001.jpeg, outfile002.jpeg, and so on.  

Dos comentários: streamer não está incluído no pacote xawtv, sudo apt-get install streamer

RobotHumans
fonte
Streamer parece ser bom. Você precisa obtê-lo separadamente; ele não vem com o xawtv automaticamente.
21812 John Baber-Lucero
É a única coisa que funciona. Mas o homem é lento. Demora 1,8 segundos para capturar uma imagem.
John Baber-Lucero
11
Entre para conversar se quiser falar um pouco mais sobre isso. Mantém os comentários
corretos
3

Eu fiz isso com o mplayer anos atrás, mas não consigo lembrar exatamente como. mplayer tv:// -tv driver=v4l2:input=1:width=352:height=288:device=/dev/video0mostra um feed ao vivo, mas estou convencido de que você pode salvá-lo como jpg ou png. Verifique a página do manual.

jippie
fonte
2

Use fswebcamnão com -omas com --save. -odiz onde escrever um arquivo de log ...

exemplo:

fswebcam --save /home/$USER/webcamGrab.jpg -d /dev/video1 -r 1280x960
Frank
fonte
1

webcamd é uma piada, é um script perl com comentários em francês!

Tudo o que faz é isso

/usr/bin/v4lctl -c /dev/video0 snap jpeg 160x120 ~/.webcamd/webcam.jpg

em um loop

Da leitura do código, este é o formato de configuração

#section common
<common>
# Interval between shots (important or it enters an infinite loop)
inter=60
www_path=/tmp/www
enable_ftp=no
webcam_resolution=320x200
# /dev/ is prepended on to this
device=video0
#section picture
<picture>
put_date=no
font=arial
fontsize=12
fontcolor=black
disp_box=no 
boxcolor=black
border=yes
bordercolor=black
#section ftp
<ftp>
host=localhost
user=teknopaul
port=999
password=foo
directory=/tmp

No entanto crédito onde créditos devidos, eu não teria encontrado v4lctlprocurando por webcam :)

teknopaul
fonte
0

O método mais fácil de linha de comando para tirar uma captura de tela de uma webcam ou dispositivo similar é encontrado usando mplayer:

mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -fps 15 -vf screenshot

Agora basta pressionar a tecla 's' e uma captura de tela no formato png será salva no seu diretório de trabalho.

Se você quiser que várias capturas de tela sejam tiradas automaticamente, pressione a tecla 'S' para iniciar as capturas de tela e pressione-a novamente para interromper o fluxo :).

Referências:

andrew.46
fonte