Learning JavaCV in pure Java

PeakGen picture PeakGen · Jul 15, 2012 · Viewed 18.8k times · Source

I am trying to learn JavaCV. As you all know, the lack of educational materials on this subject is a very big problem. In JavCV home page, they have provided lot of examples for the C++ examples in book "OpenCV CookBook". But the case is, they are not Java, they are in SCALA!!!! Now I have already gone crazy! I know lot of examples are in web, but I want to learn it from beginning to advance, then only I can do it properly. "OpenCV CookBook" is a very good book but it is all about OpenCV in C++, not anything about Java.

Someone please help me to find a better place to learn JavaCV. Provide me whatever, URL, Book, etc. But it must be about learning JavaCV in 100% Java, not in Scala, C++, C or whatever other language! Please help!

Answer

Sam picture Sam · Jul 15, 2012

< update >

Times change - and so does OpenCV. Right now, a pure Java wrapper (not Android) is growing fast, allowing anyone to use OpenCV functions directly in desktop Java apps/

< /update >

You can find some tutorials in Java in the OpenCV samples directory: samples/android.

You can also find some more info here.

Now, I am pretty sure you will say you want Java, but not Android :). But this requires an explanation.

For various reasons - the main one being efficiency and the second one portability to embedded platforms, computer vision is done almost entirely in C/C++. It is the de facto standard. Everybody uses it, with good reasons, and good results.

There are different adapters to the C++ code base, like Python and Java, but they exist to fill some specific gaps: Python is used for fast prototyping, and Java for interfacing the Android main language. But in all scenarios, the 'real' algorithm development is done with C/C++. This is why nobody cares about tutorials/books/examples in other languages.

Conclusion: If you want to learn image processing, learn C++ or Python. If you want to build some app, learn the OpenCV java interface from docs/android tutorials. But do not expect flexibility or control over performance.

Updated note

There are two more things to specify here.

First, as Android gets on its wheels, and Python proves more and more popular, the content available in the two languages (and others) are increasing dramatically. But for the years to come, the core development group - and the best docs - will be in the C++ area.

Last, but not least, you should keep in mind that in any work or programming area, if you stick to one language, you're dead. Principles matter, and you should be able to implement them in a variety of languages, and you should be able to read and understand from a variety of sources. What about a programmer that says he is not able to translate pseudo-code into Java? It's quite the same with other languages.

You can read the great blog post Don't call yourself a programmer to understand why you should forget about programming in one language.