25

First of all, I want you to know that I really like OpenCV. I have been using it for a very long time, and I use it so much that I can count on one hand the number of times I had to look into the doc the last month. I think that this is really the kind of tool that you want to use when working daily with computer vision.

I though have a growing feeling that Opencv is really not suited for use applications. I am working on pet projects which are designed to be installable by anyone, easily.

The last version of OpenCV does not ship with exes, and the Linux packages are so outdated that I wouldn't even dare use them. The best solution is thus, most of the cases compilation. Same when thinking of mobile application, or cloud computing (even though the solution seem to exist).

SO my question is, how are you guys doing ? There are plenty of computer vision based application everywhere around me, cloud based, mobile based, . . . What tools do you use ?

I would be searching for something that is available for a maximum of platforms, but most of all easily deplyable through an application !

I have searched a lot on the internet, but to always fall back to OpenCV being the 'best' tool for computer vision.

I am open to quite any solution/language/tool/framework.

Thanks !

Community
  • 1
  • 1
jlengrand
  • 12,152
  • 14
  • 57
  • 87
  • though am working on opencv too , i have the same type of question that if i am making application using opencv through android ndk , it offer me to download opencv manager etc for running the app on mobile , it looks too much offensive for customer to download one app for running another , and if configure it statically it make the app much heavy like 13-20 mb !! – AHF Jul 19 '14 at 21:59

7 Answers7

41

OpenCV is the best open source Computer Vision library available at this point in time.

People have been using it in several platforms and devices, and so have I.

The only realiable way I know to distribute an OpenCV application is to build the library yourself and ship the OpenCV binaries along with your application.

There are tools out there that can help you list and retrieve the libraries needed by your app:

Community
  • 1
  • 1
karlphillip
  • 92,053
  • 36
  • 243
  • 426
  • Hi, thanks for the help ! I'll look at that ! I also vote for OpenCV for sure, I though really think that It is quite a piece of work to distribute it easily – jlengrand May 21 '12 at 19:45
  • Indeed it is, but mainly because OpenCV is not meant for the end-user. – karlphillip May 21 '12 at 19:48
  • Hence my question :). In my former company, I never had to care about this, as we where shipping the hardware together with the software – jlengrand May 21 '12 at 19:49
  • you can statically link opencv and then will be automatically shipped with your binaries. This has the disadvantage of getting bigger executable files. – alinoz May 21 '12 at 20:29
  • OpenCV is BSD licensed so normally (if you have not enabled any GPL-licensed dependenies) you can use it without any licensing issues. – Andrey Kamaev May 21 '12 at 20:46
  • 8
    By the way OpenCV 2.5 will release an aggregate "opencv_world" module which will be the whole OpenCV library in single so/dll/dylib file. It should simplify the distribution process. This "module" is already available in trunk so you can try it (just note that currently it has experimental status). – Andrey Kamaev May 21 '12 at 20:52
  • 1
    @jlengrand Do not forget that making a package for your app is your responsability, and packaging opencv is really friendly in terms of developing an auto-installer or other automatic deployment tool. It is not in the OpenCV scope to be an independent auto-installable tool. – Sam May 22 '12 at 07:20
  • As I said, I like OpenCV, what I miss is really some kind of guidance/documentation on how to do it properly. I'll keep looking for it and provide some if I find them (or even create them myself when successful) – jlengrand May 22 '12 at 07:25
10

I use OpenCV for PC, Linux and Android phones and tablets, and the most efficient way we found is using CMake to compile and build the project. It is a bit tricky the first time, but the it is really comfortable to build your project automatically. OpenCV comes with a file FindOpenCV.cmake that allows cmake to find a link the OpenCV folders to your project.

I think OpenCV is the best library you can find, although some algorithms are not fast enough for ARM devices like tablets and phones. What we do is analyzing the assembly code generated by the compiler and then try to optimize the bottleneck OpenCV functions by, for example, using fixed point arithmetics.

Hope you find this helpful.

Tanveer Alam
  • 5,185
  • 4
  • 22
  • 43
Jav_Rock
  • 22,059
  • 20
  • 123
  • 164
  • Thank you for the information. I already performed some such things in the past for ARM devices. What I really miss actually is some good documentation on the subject. I'll look deeper at these files – jlengrand May 22 '12 at 07:04
5

Just to add to the already great answers. A small summary of why it makes complete sense to stay with OpenCV:

  1. It's loosely licensed under BSD
  2. It has a large and still growing development team
  3. Avid support groups through StackOverflow or yahoo Group
  4. Price, or lack thereof :)

To also further harp on how much you get for free with OpenCV, consider Ohloh's estimated cost for the 2,849,367 lines of code. It would cost you...roughly 45 million dollars to pay for someone else to develop it.

On a side note, if you need a quick Ubuntu package of OpenCV, Gijs Molenaar has a PPA of 2.3 available. I imagine he'll get 2.4 up soon.

Sebastian Schmitz
  • 1,884
  • 3
  • 21
  • 41
mevatron
  • 13,911
  • 4
  • 55
  • 72
0

I agree with other message : today, openCV is the best (and the only ...) computer vision library.

In open source world, you also can check Scilab, Octave, but it's complicate to package an final application.

Don't forget that you have some good propritary lib like Halcon from MVTech.

But I also agree that openCV need to improved his compile tools/lib etc... That why for my application, I decide to remove openCV and rewrite function tha I need. I use openCV only for prototype.

I also regret choice of C++, core image process operator need only C in most of case. I would prefer a 2 levels library : core in C, upper level in C++ (or python).

Best regard

Emmanuel DUMAS
  • 680
  • 10
  • 25
0

The last version of OpenCV does not ship with exes, Did you mean binary installers? Well, they are available for some platforms and not for others.

When it comes to performance, quality and price (free), none of the other tools can match OpenCV. For those who have programming experience, the initial learning curve is not much of a problem.

Admittedly, OpenCV does not have a PD/MAX like interface where people like artists can quickly prototype something. I wish I had time to work on that.

Totoro
  • 3,398
  • 1
  • 24
  • 39
0

You should absolutely keep using the free library that you say you love, that you have memorized the API for, and that solves the problems you need to solve.

Someday network effects will probably force you onto a new platform, but until then, focus on making!

Andrew Wagner
  • 22,677
  • 21
  • 86
  • 100
-1

If you need newest versions of OpenCV, you can consider a rolling-release Gnu/Linux distribution. Like Archlinux, Gentoo, Linux Mint Debian Edition(uses debian testing repo). Of course rolling release distros have disadvantages over fixed release distros, but its upto you weigh the pros and cons and choose one.

I am using ArchLinux. Its fairly stable. OpenCV version - 2.4.9, the latest.

abckb
  • 11