Hi Fran�ois, that's an excellent question, and not a troll :-). Opencv is a very powerful library, but it focuses primarily on computer vision (feature detection and extraction, classification, ...), as opposed to image processing in general (with other tasks such as denoising, segmentation, ...). The other big difference is that skimage builds on numpy ndarrays, and uses the full power of the numpy API (including of course the basic facilities for processing arrays as images that come with numpy), as well as some of scipy functions (you could have added scipy.ndimage to your list -- a few functions in skimage are wrappers around scipy.ndimage, that exist for the sake of completeneness). One important consequence is that algorithms working for 3-d or even n-d images can be easily implemented in 3-d/n-d in skimage, whereas opencv is restricted to 2-D images (as far as I know). Thanks to the use of numpy arrays, the API of skimage is also quite pleasant for a numpy user, more than the API of opencv. A related difference is that skimage is written in python and cython, whereas opencv is a C++ library. The two libraries attract a different crowd of developers, and a Python/Cython toolkit based on numpy arrays is easier to develop and maintain inside the Scientific Python ecosystem. I'm sure that other devs/users will have things to add to this discussion! Cheers, Emmanuelle On Thu, Dec 27, 2012 at 02:06:08PM -0800, Fran�ois wrote:
Hi users and devs,
It came to my knowledge that another python library (based on C++ and C codes) for image processing exists too : opencv I understand that numpy intregrates some basic features and we need some advanced features but I have the feeling that skimages is redoundant with opencv in some ways. What's the position of skimage about that? (Don't read this question as a troll but like a real question). I mean that similar features exist in both. Would not be possible to reuse/integrate opencv or merge? what's the reason for keeping them apart?
My observation is there is 4 libraries to manipulate images: * PIL * numpy * skimages * opencv That's a lot.
Cheers,