[Image-SIG] Trying to implement the array interface

Mark Asbach asbach at ient.rwth-aachen.de
Wed Jan 14 12:17:40 CET 2009

Hi there,

I'm currently extending the Python wrapper for the Open Computer  
Vision Library (opencv) with the goal to interface numerical libraries  
as seemless as possible. Unfortunately, it doesn't seem to be that  
easy ;-)

What I've done so far:

- Added an __array_interface__ property to the Python side of OpenCV  
data structures (matrices and images) that uses version 3 of the  
interface definition and supplies the keys 'version', 'shape',  
'typestr', 'data' and in some cases 'strides' when we have non- 
continuos memory layout. I think, I'm compatible to http://numpy.scipy.org/array_interface.shtml 
- Added parsing the __array_interface__ of Python objects passed to  
OpenCV methods. I'm a bit unsure of how to use the C/C++ side (array  
struct) and if I can expect it to be there (for example: I don't  
provide one with OpenCV). Since I intend to keep OpenCV independent of  
numpy, calling functions from numpy.h is not an option, as far as I  
can see.

The stuff described above is in the head revision of OpenCV,  
accessible via "svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/trunk/opencv 

I've tried using the following packages with OpenCV this way:
- numpy (1.0.4): everything works as expected. This is the most  
important library for OpenCV users, so this is a good sign.
- pylab/matplotlib (0.91.2): seems to use numpy / scipy-core.  
Everything okay.
- PIL (1.1.6): the array interface (Python side) doesn't adhere to the  
definition -> no 'version' key, 'data' is string, not a tuple holding  
the pointer. What to do with this?
- Numeric (24.2): I can create arrays from OpenCV datatypes and print  
them. Converting to other types however always yields 'Cannot convert  
scalar to float' or 'a float is required'. Strange :-/ Numeric.array  
instances also don't carry an __array_interface__. I can however  
convert by using numpy.arrays as intermediate step.
- Gnuplot (1.7): uses Numeric, so doesn't work as well
- pymat: didn't check. Seems to use Numeric, test results cover  
Numeric 23 and Matlab 6.5 only, so this package might be dead?
- numarray: didn't check. Is there still any relevance of this package?


Mark Asbach
Institut für Nachrichtentechnik, RWTH Aachen University

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4403 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/image-sig/attachments/20090114/66ef420d/attachment.bin>

More information about the Image-SIG mailing list