Difference between revisions of "Logitech QuickCam Pro 9000"

From MyLabWiki
Jump to: navigation, search
(Lens)
(Pixel formats)
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
Related camera: [[Logitech QuickCam Vision Pro 9000]].
+
Related cameras: [[Logitech QuickCam Vision Pro 9000]] for Mac and the successor [[Logitech Webcam Pro 9000]].
  
 
== Drivers and Applications ==
 
== Drivers and Applications ==
Line 40: Line 40:
 
=== Pixel formats ===
 
=== Pixel formats ===
  
When starting guvcview<ref name="guvcview"/> it dumps the supported pixel formats together with the resolutions and frame rates that can be used for each format:
+
When starting guvcview<ref name="guvcview"/> it dumps the supported pixel formats together with the resolutions and frame rates that can be used for each format (see also [[Pixel formats]]):
  
 
   '''{ pixelformat = 'MJPG', description = 'MJPEG' }'''
 
   '''{ pixelformat = 'MJPG', description = 'MJPEG' }'''

Latest revision as of 14:58, 27 August 2010

Related cameras: Logitech QuickCam Vision Pro 9000 for Mac and the successor Logitech Webcam Pro 9000.

Contents

Drivers and Applications

GTK+ UVC Viewer

The GTK+ UVC Viewer[1] (guvcview) a simple GTK interface for capturing and viewing video from devices supported by the linux UVC driver. It works great with the Logitech QuickCam Pro 9000 and seems to support all features of the camera.

When the camera is used for the first time after boot, one has to execute

 $> sudo guvcview -a

to detect and add all the supported controls. Note: this may not be necessary if libwebcam is installed (TBC).

  • Can capture video
  • Can capture audio – GNOME sound mixer panel applet can control audio input level and it sounds good. Mute works too!
  • Additional controls – including focus – are enabled after running guvcview -a as root once
  • Can be run in control mode only so that the video is captured by another application by guvcview is used to adjust settings

Gstreamer

The camera works with Gstreamer[2]. More details and examples on Gstreamer Cheatsheet.

Windows

After installation, the software that comes with the camera works well and can capture HD-like video very well. However, when using a third party capture application, size seems to be stuck at 320x240 pixels.

Mac

Camera seems to work but stuck on 320x240 and no way to control settings. I couldn't find any useful app for Mac.

Other Apps

Other apps are listed on the QuickCam Teams website[3] and Unicap[4].

For programming Libwebcam</ref>http://www.quickcamteam.net/software/libwebcam</ref> can be used.

Features

Pixel formats

When starting guvcview[1] it dumps the supported pixel formats together with the resolutions and frame rates that can be used for each format (see also Pixel formats):

 { pixelformat = 'MJPG', description = 'MJPEG' }
 { discrete: width = 160, height = 120 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 176, height = 144 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 320, height = 240 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 352, height = 288 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 640, height = 480 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 800, height = 600 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 960, height = 720 }
     Time interval between frame: 1/15, 1/10, 1/5, 
 { pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
 { discrete: width = 160, height = 120 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 176, height = 144 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 320, height = 240 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 352, height = 288 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 640, height = 480 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 800, height = 600 }
     Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 960, height = 720 }
     Time interval between frame: 1/10, 1/5, 
 { discrete: width = 1600, height = 1200 }
     Time interval between frame: 1/5, 
 { pixelformat = 'RGB3', description = 'RGB3' }
 { discrete: width = 160, height = 120 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 176, height = 144 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 320, height = 240 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 352, height = 288 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 640, height = 480 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 800, height = 600 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 960, height = 720 }
     Time interval between frame: 1/15, 1/10, 1/5, 
 { discrete: width = 1600, height = 1200 }
     Time interval between frame: 1/5, 
 { pixelformat = 'BGR3', description = 'BGR3' }
 { discrete: width = 160, height = 120 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 176, height = 144 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 320, height = 240 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 352, height = 288 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 640, height = 480 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 800, height = 600 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 960, height = 720 }
     Time interval between frame: 1/15, 1/10, 1/5, 
 { discrete: width = 1600, height = 1200 }
     Time interval between frame: 1/5, 
 { pixelformat = 'YU12', description = 'YU12' }
 { discrete: width = 160, height = 120 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 176, height = 144 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 320, height = 240 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 352, height = 288 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 640, height = 480 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 800, height = 600 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 960, height = 720 }
     Time interval between frame: 1/15, 1/10, 1/5, 
 { discrete: width = 1600, height = 1200 }
     Time interval between frame: 1/5, 
 { pixelformat = 'YV12', description = 'YV12' }
 { discrete: width = 160, height = 120 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 176, height = 144 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 320, height = 240 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 352, height = 288 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 640, height = 480 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 800, height = 600 }
     Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
 { discrete: width = 960, height = 720 }
     Time interval between frame: 1/15, 1/10, 1/5, 
 { discrete: width = 1600, height = 1200 }
     Time interval between frame: 1/5,

I'm not quite sure about all these pixel formats and how they map to fourcc names.

According to the UVC specs[5]: The USB Video Class supports one packed 4:2:2 YUV format (YUY2) and one planar 4:2:0 YUV format (NV12).

The NV12 format doesn't seem to work with the QuickCam Pro 9000, at least not in gstreamer, but YV12 does. Try one of these:

 gst-launch v4l2src ! video/x-raw-yuv,format=\(fourcc\)YUY2,width=640,height=480,framerate=10/1 ! xvimagesink
 gst-launch v4l2src ! video/x-raw-yuv,format=\(fourcc\)YV12,width=640,height=480,framerate=10/1 ! xvimagesink

and this won't work:

 gst-launch v4l2src ! video/x-raw-yuv,format=\(fourcc\)NV12,width=640,height=480,framerate=10/1 ! xvimagesink

Autofocus

Autofocus is built into the wintendo drives, thus does not work in Linux.

Q: How can we manually control focus in Linux?
A: Yes, guvcview can control focus and also has autofocus functionality

Lens

According to the specs the camera has a Zeiss lens[6]. Although it is quite all right compared to other webcams, the image lacks sharpness around the edges and this is very visible and annoying on outdoor pictures.

Update: I have reason to believe that the lack of sharpness was cause by the camera being behind a window - TBC.

QCP9kSampleImage.png

The above image was taken on Linux using Guvcview; however, the problem also exists when using the windows software that came with the camera:

QCP9kSampleImageWin.jpg

My Logitech QuickCam Vision Pro 9000 appears to have a better sharpness at the edges.

References

  1. 1.0 1.1 http://guvcview.berlios.de/
  2. http://gstreamer.freedesktop.org/
  3. http://www.quickcamteam.net/software/linux/v4l2-software/
  4. http://www.unicap-imaging.org/
  5. USB: Approved Class Specification Documents, http://www.usb.org/developers/devclass_docs
  6. Logitech Specs