views:

1473

answers:

13

What libraries do I have to pick from when working with Computer Vision in C/C++?

I realize that Google has a lot of good results, but maybe there's great libraries out there that it missed.

+21  A: 

We use OpenCV extensively where I work.

It provides a full suite of excellent vision processing tools. I recommend reading through the wiki for a more detailed explanation and better written explanation that what I would give.

scubabbl
+4  A: 

OpenCV is quite mature and covers most areas of computer vision.

+1  A: 

If I were to compare OpenCV with openFrameworks - how would that work out? Which is better at what, and so on?

eMilk
+3  A: 

I would have a hard time giving you a technical answer regarding which is better, I can tell you we have a variety of PhDs working on various computer vision problems for work and they all use and recommend OpenCV.

scubabbl
+1  A: 

openframeworks uses opencv and provides a wrapper for it,

for example, this code is classes that help you use opencv in an easy way:

http://svn.openframeworks.cc/browser/listing.php?repname=addons&path=%2FofxOpenCv%2Ftrunk%2FofxOpenCv%2Fsrc%2F#_ofxOpenCv_trunk_ofxOpenCv_src_

they are not different libraries.

A: 

If I were to compare OpenCV with openFrameworks - how would that work out? Which is better >at what, and so on?

as I said above, OF uses opencv, (providing a wrapper). They aren't different. We try to provide a simple interace.

+3  A: 

The Intel Performance Primitives are quite popular in the computer vision field.

geschema
OpenCV will use IPP automatically if available
Martin Beckett
+2  A: 

It may have been implied but the original question did not specify that the libraries be FOSS. Two leading commercial libraries are:

Both support C++ and offer free 30-day trials.

Matt Hortman
+1  A: 

Many people have recommended OpenCV which is pretty nice (I've tried the python wrappers, which is OK for quick prototyping). You might also like to check out gpuCV that uses the advantages of massive parallelism in GPU's for computer vision. Its API is very similar to the one OpenCV has (mostly compatible) and hides all the GPU programming from the user/developer.

Hannson
+4  A: 

OpenCV is very popular, and no doubt it is good, but if you are serious about C++ and like STL-like containers, which are also very fast then this is worth considering:

libCVD http://savannah.nongnu.org/projects/libcvd

Cambridge Video Dynamics - Library for images, video capture, display, computer vision and more. Integrates well with TooN for a linear algebra framework. Language: C++

This is actively developed, and has a lot of useful features and algorithms, and generally those guys make things to work very fast.

It is LGPL.

It is possible to compile it on Win, Linux and MacOS X.

There is also an intention to provide port for Python with this one, to allow to prototype Computer Vision algorithms with Python and SciPy very fast (i am not sure at which stage it is now, but there was a paper about it in a Python conference.)

If you are trying to do anything in real-time you should seriously consider libCVD.

For example, PTAM (Parallel Tracking And Mapping) framework by Georg Klein uses this library.

Denis C
The last entry on the site seems to be a beta from 2005?
Martin Beckett
A: 

OpenCV is probably the most famous and extremely mature. But there has been a recent shift to CUDA based systems due to performance benefits, http://www.nvidia.com/object/cuda_home.html#

Also for safer languages like C#, the Aforge .NET framework is pretty good,

Egon
OpenCV compatible GPU based library https://picoforge.int-evry.fr/cgi-bin/twiki/view/Gpucv/Web/
Martin Beckett
A: 

If you are using OpenCV, see also http://camellia.sourceforge.net/ (reimplementing several IPP features).

Cfr
+1  A: 

Although OpenCV is probably the most widely used a couple of others may be worth looking at:

http://cimg.sourceforge.net/ is a very STL like, highly templated library. It's contained in a single header and the return-by-reference design means you can chain a bunch of operations together in a single statement. It's backed by INRIA (French national research lab)

http://vxl.sourceforge.net/ is very similar to OpenCV but has a more C++ design. A lot more like the new OpenCV2.0 c++ version.

Martin Beckett