Faça a sua escolha:
ffmpeg
ffmpeg -f video4linux2 -i /dev/v4l/by-id/usb-0c45_USB_camera-video-index0 -vframes 1 test.jpeg
Prefira pegar dois quadros e usar o segundo:
ffmpeg -f video4linux2 -i /dev/v4l/by-id/usb-0c45_USB_camera-video-index0 -vframes 2 test%3d.jpeg
fswebcam
Este é um programa muito bom, tem uma opção de atraso:
fswebcam -r 640x480 --jpeg 85 -D 1 shot.jpg
mplayer
mplayer tv:// -tv driver=v4l2:device=/dev/video0:width=1600:height=1200:outfmt=rgb24 -frames 3 -vo jpeg
P.S. Se a sua webcam usb parar de responder ou tirar fotos "esverdeadas", desconecte-a e conecte-a novamente. O meu ficou preso em "O motorista mudou o tempo por quadro de 32767/1 para 2/5" com ffmpeg