Abeocracy

Home · GitHub · PyGame · Facebook · Disqus

A blog about my work on the camera module for pygame as part of the GSOC project.

July 17, 2009 at 4:27pm
home

GSOC Midterm report

With the midterm evaluation behind us I thought it would be useful to post a update on the progress on the camera module for Mac OSX. The current version on github can read a frame from the camera and copy it to the surface. There is still something wrong with the colors, this has probably something to do with the masks in surf->format. I have tried out some combination but non seem to work, so if you have suggestion on how to get the colors write please post them on the pygame mailinglist.

I have thoroughly cleaned up the camera_mac.m file and have removed all Cocoa code because it caused to many problems. Only the mac_gworld_to_nsimage used Cocoa so I didn’t have to trow away too much code. The following functions are now available:

  • mac_list_cameras()
  • mac_open_device ()
  • mac_init_device()
  • mac_close_device()
  • mac_start_capturing()
  • mac_stop_capturing ()
  • mac_read_raw()
    note: When I try to print the string I get nothing, this is probably because of a \0 byte in the array.
  • mac_read_frame()
  • mac_camera_idle()
  • mac_copy_gworld_to_surface()
    note: This function gives

The PyCameraObject struct has altered a bit because I don’t use a ImageSequence anymore because it was easier to get the frame copy the frame directly instead of recording a frame into a sequence and then decompressing a frame out of it. In addition to removing the ImageSequence I make use of the ‘buffer struct’. Here is the current PyCameraObject struct:

typedef struct {
    PyObject_HEAD
    char* device_name;              // unique name of the device
    SeqGrabComponent component;     // A type used by the Sequence Grabber API
    SGChannel channel;              // Channel of the Sequence Grabber
    GWorldPtr gworld;               // Pointer to the struct that holds the
                                    // data of the captured image
    Rect boundsRect;                // bounds of the image frame
    long size;                      // size of the image in our buffer to draw
    short bytes;                    // number of bytes in gworld
    struct buffer pixels;           // pixels
} PyCameraObject;

A usual you can find the latest version on github.com/ab3 so if you would like to test the latest changes or would like to help with the color problem or the read_raw function, you are always welcome.

ToDo

Here is a list of thing I still have to do:

  • fix the colors of read_frame()
  • fix read_raw()
  • implement set_controller() and get_controller()
  • add simple computer vision stuff
    • thresholding with hysteresis *…
  • optimization, sbggr8_to_rgb???
  • implement proof of concept game…

Conclusion

So this concludes my midterm report, feel free to post any bugs, comments and suggestions

Comments (View)
blog comments powered by Disqus