There is a simpler way of doing this. :-)
in reply to GStreamer capturing video frame
I know it isn't Perl, but you can run it via Perl's system command. :-)
mplayer -vf screenshot tv:// driver=v4l2:width=800:height=600:device=/
+dev/video0 -fps 15
# and that gave me 800x600 video, and after I pressed 's' i obtained 8
+00x600 in the snapshot.
# q to quit
# I did the same for 1024x768, 1280x1024, and 1600x1200 and obtained a
# 1280x1024, and 1600x1200 video and snapshot respectively.
# or get shots from a video
# mplayer -vf screenshot some.avi
# use keys
# 1 and 2 - Adjust contrast.
# 3 and 4 - Adjust brightness.
# 5 and 6 - Adjust hue.
# 7 and 8 - Adjust saturation.