[ros-users] Webcam Use

Christian Verbeek verbeek at servicerobotics.eu
Fri Jan 14 17:06:27 UTC 2011


Hi,

Did anyone use the MJPG format? I mean grabbing the MJPG data, writing
it to a file and than try to decompress and view it?

The thing is that it would be very cheap to copy the mjpg data to a
sensor_msgs/CompressedImage message and the transmit the image to a
remote computer. What I found is that mjpg is not jpg. I had to patch
libjpg in order to insert the missing DHT segment manually. Are there
any other means of making use of the mjpg data?

Regards
Christian

Am 06.01.2011 02:22, schrieb Homer Manalo:
> Thanks for the info Patrick, that would be a likely candidate beside
> the webcam pro 9000. Eric, that was a very informative post. Now we
> have a better understanding on the hardware we will get.
>
> Thanks,
> Homer
>
> On Thu, Jan 6, 2011 at 6:06 AM, Eric Perko <wisesage5001 at gmail.com
> <mailto:wisesage5001 at gmail.com>> wrote:
>
>     Homer,
>
>     Some numbers on using a webcam with my uvc_cam driver (they are a
>     little fuzzy since it's been a while since I did the tests, but it
>     should be about right). No changes to the driver were made between
>     these tests, and all were running the same version of Ubuntu
>     (64-bit unless it wasn't supported, like on the Core Duo). We were
>     doing 640x480 @ 30fps and I believe had to do a YUYV to RGB
>     conversion in the driver because the cameras did not support
>     outputting RGB (though I can't recall if that is the Logitech
>     Webcam Pro 9000 or these other crappy, no brand cameras we were
>     using before the Webcam Pro 9000s).
>
>     Anyways, the numbers:
>
>     1. Intel Core Duo, somewhere between 2.0 and 2.4 GHz (Mac Mini,
>     circa 2006-2007): somewhere around 40% CPU per camera. Basically,
>     what I remember was that we were gonna lose a whole CPU core to
>     just a pair of cameras and that was unacceptable.
>     2. Intel Core 2 Duo, 2.0 GHz (IBM Thinkpad T61, circa 2007): about
>     10-15% CPU per camera.
>     3. Intel Core i7 920, 2.66GHz (Custom build, Summer 2009): very
>     low usage, sometimes even showing up at 0% in the System Monitor.
>     5-8% tops when it does show up.
>
>     As you can see, for whatever reason, the Core 2 kicks the crap out
>     of the Core Duo. 64-bits vs 32-bits, extra SSE voodoo, better USB
>     drivers on the T61 than the Mac Mini, who knows why? Anyways,
>     definitely something to think about. Also, any webcam that you can
>     use in an RGB mode as opposed to YUYV where the driver is going to
>     have to spend time converting from YUYV to RGB will be good. 
>
>     That said, we've been quite happy with the Webcam Pro 9000s. Let
>     me know if you have any other questions about it. I'm including
>     the console output of guvcview, which lists the different image
>     sizes and 1/FPS pairs that the camera clams to support in
>     different modes (MJPG or YUYV in this case), in case anyone
>     wonders about that and doesn't have a Webcam Pro 9000 on hand to
>     find out :)
>
>     Hope that helps.
>
>     - Eric
>
>     guvcview console output:
>
>         video device: /dev/video0 
>         /dev/video0 - device 1
>         Init. UVC Camera (046d:0809) (location: usb-0000:00:1d.7-5)
>         { pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
>         { discrete: width = 640, height = 480 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { 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 = 360 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 640, height = 400 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 768, height = 480 }
>         Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 800, height = 456 }
>         Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 800, height = 504 }
>         Time interval between frame: 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 = 864, height = 480 }
>         Time interval between frame: 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 = 1280, height = 720 }
>         Time interval between frame: 2/15, 1/5, 
>         { discrete: width = 1280, height = 800 }
>         Time interval between frame: 2/15, 1/5, 
>         { discrete: width = 1600, height = 904 }
>         Time interval between frame: 1/5, 
>         { discrete: width = 1600, height = 1000 }
>         Time interval between frame: 1/5, 
>         { discrete: width = 1600, height = 1200 }
>         Time interval between frame: 1/5, 
>         { pixelformat = 'MJPG', description = 'MJPEG' }
>         { discrete: width = 640, height = 480 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { 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 = 360 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 640, height = 400 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 768, height = 480 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 800, height = 456 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 800, height = 504 }
>         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 = 864, height = 480 }
>         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/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 1280, height = 720 }
>         Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 1280, height = 800 }
>         Time interval between frame: 1/25, 1/20, 1/15, 1/10, 1/5, 
>         { discrete: width = 1600, height = 904 }
>         Time interval between frame: 1/10, 1/5, 
>         { discrete: width = 1600, height = 1000 }
>         Time interval between frame: 1/10, 1/5, 
>         { discrete: width = 1600, height = 1200 }
>         Time interval between frame: 1/10, 1/5, 
>         checking format: 1196444237
>         VIDIOC_G_COMP:: Invalid argument
>            compression control not supported
>         vid:046d 
>         pid:0809 
>         driver:uvcvideo
>         Adding control for Pan (relative)
>         Adding control for Tilt (relative)
>         Adding control for Pan Reset
>         Adding control for Tilt Reset
>         Adding control for Pan/tilt Reset
>         Adding control for Focus (absolute)
>         mapping control for Pan (relative)
>         mapping control for Tilt (relative)
>         mapping control for Pan Reset
>         mapping control for Tilt Reset
>         mapping control for Pan/tilt Reset
>         mapping control for Focus (absolute)
>         mapping control for LED1 Mode
>         mapping control for LED1 Frequency
>         mapping control for Disable video processing
>         mapping control for Raw bits per pixel
>
>
>
>     On Wed, Jan 5, 2011 at 12:00 PM, Patrick Goebel
>     <patrick at casbs.stanford.edu <mailto:patrick at casbs.stanford.edu>>
>     wrote:
>
>         Hi Homer,
>
>         I have had several years of good experience with the Philips
>         SPC1300NC
>         both under Windows using RoboRealm and now more recently under
>         Ubuntu+ROS using Eric Perko's uvc_cam package (git clone
>         https://github.com/ericperko/uvc_cam.git) and OpenCV.  I
>         haven't done
>         any benchmarking under Linux but under Windows I was getting
>         as high as
>         80 fps at 160x120 resolution and manual exposure.
>
>         --patrick
>
>         On 1/5/2011 6:53 AM, Homer Manalo wrote:
>         > Thanks! Anyone had used Philips SPC1300NC or a creative webcam?
>         >
>         _______________________________________________
>         ros-users mailing list
>         ros-users at code.ros.org <mailto:ros-users at code.ros.org>
>         https://code.ros.org/mailman/listinfo/ros-users
>
>
>
>     _______________________________________________
>     ros-users mailing list
>     ros-users at code.ros.org <mailto:ros-users at code.ros.org>
>     https://code.ros.org/mailman/listinfo/ros-users
>
>
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20110114/99961f13/attachment-0003.html>


More information about the ros-users mailing list