=======================================================================
PyOpenCV - A Python wrapper for OpenCV 2.x using Boost.Python and NumPy
=======================================================================

PyOpenCV brings Willow Garage's Open Source Computer Vision Library 
(OpenCV) verion 2.x to Python. The package takes a completely new and 
different approach in wrapping OpenCV from traditional swig-based and 
ctypes-based approaches. It is intended to be a successor of 
ctypes-opencv and to provide Python bindings for OpenCV 2.x. 
Ctypes-based approaches like ctypes-opencv, while being very flexible at 
wrapping functions and structures, are weak at wrapping OpenCV's C++ 
interface. On the other hand, swig-based approaches flatten C++ classes 
and create countless memory management issues. In PyOpenCV, we use 
Boost.Python, a C++ library which enables seamless interoperability 
between C++ and Python. PyOpenCV will offer a better solution than both 
ctypes-based and swig-based wrappers. Its main features include:

    * A Python interface similar to the new C++ interface of OpenCV 2.x, 
      including features that are available in the existing C interface 
      but not yet in the C++ interface.
    * Access to C++ data structures in Python.
    * Elimination of memory management issues. The user never has to 
      worry about memory management.
    * Ability to convert between OpenCV's Mat and arrays used in 
      wxWidgets, PyGTK, and PIL.
    * OpenCV extensions: classes DifferentialImage, IntegralImage, and 
      IntegralHistogram. 

In addition, we use NumPy to provide fast indexing and slicing 
functionality to OpenCV's dense data types like Vec-like, Point-like, 
Rect-like, Size-like, Scalar, Mat, and MatND, and to offer the user an 
option to work with their multi-dimensional arrays in NumPy. It is 
well-known that NumPy is one of the best packages (if not the best) for 
dealing with multi-dimensional arrays in Python. OpenCV 2.x provides a 
new C++ generic programming approach for matrix manipulation (i.e. 
MatExpr). It is a good attempt in C++. However, in Python, a package 
like NumPy is without a doubt a better solution. By incorporating NumPy 
into PyOpenCV to replace OpenCV 2.x's MatExpr approach, we seek to bring 
OpenCV and NumPy closer together, and offer a package that inherits the 
best of both world: fast computer vision functionality (OpenCV) and fast 
multi-dimensional array computation (NumPy). 

:Author: Minh-Tri Pham <pmtri80@gmail.com>
:Version: 2.1.0.wr1.0.0 (beta)
:Released: Apr 2010
:License: New BSD License

Availability
============

   To get the latest version, see:
   http://code.google.com/p/pyopencv/

Requirements
============

The following packages must be installed on your platforms:
 - OpenCV 2.x
 - Python 2.5 or above
 - NumPy 1.2.0 or above
 - Boost.Python from Boost 1.41.0 or above

Installation
============

Follow the instructions at the Wiki section of the project website at Google Code.

Support
-------

- Platforms: Win32, Linux, and Mac OS
- OpenCV version 2.x

How to use
==========

Download the demo package that is available from the project website. The package contains many Python demos slightly modified from the Python and C++ demos of OpenCV. Also, check out reference pages at the Wiki section.
