OpenCV

From OLPC
Revision as of 04:52, 5 November 2008 by MitchellNCharity (talk | contribs) (→‎Hand tracking: +multiple XO's => possibilities (eg 3D handtracking).)
Jump to navigation Jump to search

About

Wikipedia: OpenCV

OpenCV is an open source computer vision library originally developed by Intel. It is free for commercial and research use under a BSD license. The library is cross-platform, and runs on Mac OS X, Windows and Linux. It focuses mainly on real-time image processing, as such, if it finds Intel's Integrated Performance Primitives (IPP) on the system, it will use these commercial optimized routines to accelerate itself.
OpenCV's application areas include:
  • Human-Computer Interface (HCI)
  • Object Identification
  • Segmentation and Recognition
  • Face Recognition
  • Gesture Recognition
  • Motion Tracking
  • ...

Python integration

OpenCV has reasonably robust Python interface created with SWIG. This makes it easy to integrate with existing libraries like Pygame and olpcgames. As an example, OpenCV can be combined with Pygame to make a simple face tracking xeyes clone.

The interface is available as a package in the default repository, called opencv-python.

Face recognition

Nirav Patel reports success in basic image recognition on the XO Laptop (with xo-cam) with good timings using OpenCV and xawtv.

Sources: face.py haarcascade_frontalface_alt.xml

Head tracking

http://code.google.com/p/ehci/ ehci - GSoC OpenCV-based head and hand tracking. Has python api.

This would be useful for augmented reality.

Hand tracking

To do something similar to the pygame http://www.youtube.com/watch?v=HIDdxY3L5V8 .

Perhaps combine it with Dasher[1] to get something like http://www.youtube.com/watch?v=IK5_QYv3kf0 . Dasher would make a nice Activity. It even has a Mongolian corpus.

When one XO is present, several more are likely to be as well. Interesting possibilities. For instance, two XO's might work together to do 3D hand tracking. Others?

Downloads

The source can be downloaded from sourceforge, or OpenCV can be installed from the opencv package in the Fedora repository. To use OpenCV with python, also install the opencv-python package.

$ yum install opencv opencv-python

Problems

Currently, OpenCV fails to interface with the XO's Camera. It is therefore necessary to use xawtv or Gstreamer to capture video or images, and feed the results to OpenCV.

The problem is fixed in the latest CVS source, or can be fixed by changing the following at line 415 in otherlibs/highgui/cvcap_v4l.cpp in the opencv 1.0.0 source.

  capture->form.fmt.pix.field       = V4L2_FIELD_INTERLACED;

to

  capture->form.fmt.pix.field       = V4L2_FIELD_ANY;

Note that the packages required to compile OpenCV include gtk2-devel, which currently is not installable, a known bug. I got around it with the following, though your milage may vary.

yum -t --enablerepo=* install libXI-devel
yum -t --enablerepo=* install gtk2-devel

An easier but even dirtier fix is available here.

Links