I suspect that what you are after is a --delay 5 type option for FFmpeg which at the moment does not exist except as a feature request. However there is an older utility called fswebcam which I have tested comprehensively on my system that will accomplish exactly what you are after. Install with:
sudo apt-get install fswebcam
and run a simple command line something like the following:
fswebcam --delay 5 --skip 200 --png 5 testing.png
A more elaborate command line plus full terminal output can be seen below as it runs on my own system:
andrew@ilium~$ fswebcam --device /dev/video0 \
> --input "Camera 1" \
> --resolution 800x600 --delay 5 \
> --skip 200 --png 5 \
> testing.png
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
Delaying 5 seconds.
--- Capturing frame...
Skipping 200 frames...
Capturing 1 frames...
Captured 201 frames in 6.64 seconds. (30 fps)
--- Processing captured image...
Setting output format to PNG, quality 5
Writing PNG image to 'testing.png'.
andrew@ilium~$
The option --delay 5 gives the webcam a chance to initialize while the option --skip 200 delays the screen capture after the stream is open for about 6 seconds. You will need to experiment a little with this to allow for your specific camera's autofocus time.
How cool is the Linux command line :)