[OLPC-Games] vision processing / juggling

Tim Wintle tim.wintle at teamrubber.com
Tue Jul 15 16:47:22 EDT 2008


> I think they want to wait on GSoC to finish before merging back into
> the trunk.  In any case, it's going to release with pygame 1.9, which
> is the next one after 1.8.1 comes out in a few days.

Great news - can't wait to be able to integrate it into my games.

> Nirav
> 
> On Tue, Jul 15, 2008 at 5:19 AM, Tim Wintle <tim.wintle at teamrubber.com> wrote:
> > Nariv - this looks great - any idea when the camera module may get
> > merged back into the pygame trunk?
> >
> > Tim Wintle
> >
> > On Mon, 2008-07-14 at 08:21 +0900, Nirav Patel wrote:
> >> > Nirav Patel's GSoC project is vision processing for the XO (I believe
> >> > using a subset of the OpenCV library)... and rather good at colored
> >> > object / face recognition. (Eric, try the
> >> > http://wiki.laptop.org/go/Colors! activity on an XO when you get a
> >> > chance... it can use the green power cord (or really any light in a
> >> > dark room) as drawing input)
> >>
> >> The original plan was to use OpenCV, but I switched to adding vision
> >> stuff to pygame instead.
> >>
> >> > I was thinking ... a learn to juggle activity may make use of this
> >> > processing to track progress and give tips (practice 1/2 balls again!,
> >> > etc). Greg -- you've done some vision processing and you are a
> >> > juggling guru... you might want to consider applying for a laptop at
> >> > http://projectdb.olpc.at/ to play with this sort of thing. :)
> >> >
> >> > I wonder what best color / pattern could go on the balls to be easy to
> >> > track... possibly to track spin? :)
> >>
> >> Any uniformly and brightly colored objects would work well.  For
> >> convenience of coding, its probably best to use three different
> >> colored balls.  Tracking spin would involve optical flow, which I do
> >> plan on writing, but I'm not sure its feasible to run realtime on the
> >> XO.  There is basically a two step process for color based object
> >> tracking in the vision stuff I'm writing.
> >>
> >> The first step is finding the color of the object.  This involves the
> >> user holding up an object so it fills a Rect being overlaid on images
> >> being captured by the camera.  You would want to set up the Camera
> >> object so that it captures images in HSV with the following:
> >> camera.Camera("/dev/video0", size, "HSV")  It would then involve
> >> looping something like the following until the user hits a key, where
> >> cam is the Camera object, display is the display surface, and ccolor
> >> is the average color you want:
> >>
> >>        snapshot = cam.get_image(snapshot)
> >>        display.blit(snapshot, (0,0))
> >>        crect = pygame.draw.rect(self.display, (255,0,0), (300,220,40,40), 4)
> >>        ccolor = pygame.transform.average_color(snapshot, crect)
> >>        pygame.display.flip()
> >>
> >> The second step is tracking the object.  It involves looping through
> >> the following, where thresh is a surface the size and depth of
> >> snapshot, cent[0] is the (x,y) coordinate of the object, and cent[1]
> >> is the size in pixels:
> >>
> >>        snapshot = cam.get_image(snapshot)
> >>        pygame.transform.threshold(thresh, snapshot, ccolor,
> >> (20,25,25), (0,0,0), True)
> >>        mask = pygame.mask.from_surface(thresh)
> >>        cc = mask.connected_component()
> >>        cent = cc.centroid()
> >>
> >> Note that if you're running this on the XO, you're going to want to
> >> capture images as "RGB" at (320, 240), pygame.transform.scale them
> >> down to (160, 120), convert the colorspace to "HSV", and then do all
> >> the thresholding and mask stuff.  Note also that Camera.get_image()
> >> returns 24 bit Surfaces, while the XO displays 16 bit surfaces.  So
> >> blitting a Surface captured by the camera to the display involves a
> >> strangely cpu expensive operation that makes it impossible to capture
> >> and blit 640x480 images at 30 fps.  This may be something I can find a
> >> workaround for, but for now, stick with 320x240 or smaller.
> >>
> >> There are a few example scripts in
> >> http://git.n0r.org/?p=pygame-nrp;a=tree;f=examples/camera though none
> >> of them are OLPC specific.
> >>
> >> Nirav
> >>
> >> > Brian
> >> >
> >> _______________________________________________
> >> Games mailing list
> >> Games at lists.laptop.org
> >> http://lists.laptop.org/listinfo/games
> >
> > _______________________________________________
> > Games mailing list
> > Games at lists.laptop.org
> > http://lists.laptop.org/listinfo/games
> >
> _______________________________________________
> Games mailing list
> Games at lists.laptop.org
> http://lists.laptop.org/listinfo/games



More information about the Games mailing list