http://opencv.willowgarage.com/wiki/Android or http://code.google.com/p/javacv/ ?
I am new to computer vision, and want to do something on the phone camera such as matching the current screen to the most similar image in the database.
Both of them are java, what are the differences? Which one should I use?
Thank you so much for helping!
JavaCV is a wrapper around some native libraries, including OpenCV.
In any case you are going to use OpenCV, either directly by writing your own wrapper or using OpenCV's Android wrappers or using JavaCV.
As said JavaCV uses several libs, so it has many more features than only OpenCV. If you need those features than naturally you'd choose JavaCV.
Related
Is it possible to scan a passport image using mobile camera and save his details and later detect that person using an Android mobile camera and fetch his details ?(Face detection)
I'd suggest you to use OpenCV Recognition API.
This API can let you save face data of a person and then use it to match with the new face data that you can get.
There are two ways to go about it
Use OpenCV for Android
Use JavaCV
OpenCV for Android is more fully supported than JavaCV. Follow Google's instructions to install Eclipse, the Android SDK and NDK (don't forget the NDK!)
Afterwards, follow this tutorial to install openCV. Try out the sample applications.
Alternatively, you can try using JavaCV instead of OpenCV for Android. This means you won't need to setup the Android NDK. It also means you won't need to write any C++. I didn't try this. But I suspect it is easier.
The downside is: it doesn't support everything OpenCV does.
I'm using ARToolKit in an android app and i would like to do a features detection (probably with FREAK because now ARToolKit uses it) in an image. My goal is just to have the number of key points in the image. But I don't find the tools to do just this "simple" task.
Thank you in advance for your help
You should look at OpenCV and their implementation of FREAK. There are JAVA wrappers for OpenCV which work on android.
You'll find lot's of tutorials and info at their website and forum.
Here is a similar answer with C++ code. Shouldn't be hard to convert it to Java using OpenCV's own wrappers.
OpenCV FREAK: Fast Retina KeyPoint descriptor
Regards,
Daniel
I have sucesfully implemented face detection in my app using Android's Camera.FaceDetectionListener (following the Android Developers guide), but unfortunatelly some devices does not support this feature. Is there another way to achieve the same result?
I usually work with OpenCV to make image processing algorithms.
http://opencv.org/platforms/android.html
Its algorithms are much better than Android face detection, besides if you download the SDK you have a faceDetection example.
Here are the downloads:
http://opencv.org/downloads.html
The sdk, handles camera api 2, which it works at 30 fps, with a wrapper if you want to process video frames. Besides there are samples where you can mix Java OpenCV code with JNI code, to make so much faster your algorithm.
Unfortunately, these examples are made on Eclipse projects, but they are not difficult to merge into Android studio project.
I hope that these references are useful
Cheers.
I need to work on detecting edges from an Image, I'm using Canny algorithm for that.
Since OpenCV for android is available 2.4.2 while i'm trying to run examples it says.
"OpenCV Manager is not installed, please try to install it." after install it from the market it is working fine.
But if i want the user's to install my application so that they don't have to install another .apk for using my application.
-> How to use openCV without without asking for another application i.e. manger should be pre installed.?
-> is there any way i can use Canny algorithm for edge detection without OpenCV any good angorithm tutorials for implementing in in android.?
You might find information about this on the OpenCV webpage. This said, this is deprecated and OpenCV advises not to do this in production. The manager actually allows the user to download the OpenCV library once for all. Then, your application will be much smaller!
About not using OpenCV, you can try FastCV (as Aaron suggested), but it seems overkill for your application (and it requires you to be familiar with NDK development). With OpenCV, in the other hand, you can code either in java (by the way, have a look at JavaCV) or using the NDK.
Finally, if you only need a Canny Edge detector and don't want to use a library, you can try to write it yourself. The related page on Wikipedia should be enough for this (I could do it a few years ago as an exercise).
Have you looked into Qualcomm's FastCV? It offers some of the more common image processing algorithms offered in libraries like OpenCV. They also have a pretty cool augmented reality API called Vuforia.
Fair warning, the support documentation isn't that great and it requires that you are familiar with NDK development.
https://developer.qualcomm.com/mobile-development/mobile-technologies/computer-vision-fastcv
I wanted to develop a face recognition app in android. While searching, all i come up with is, the Opencv method, which i think is using C or C++. Can someone post the code or method for android? I am a newbie, so trying new stuff. Thanks!
OpenCV indeed uses C and C++ (and also Python), however you can try and use a java wrapper for the opencv library. Here is a nice wrapper.
If you have a newer phone/tablet, you can use the face recognition API in Android 14+. Check out Camera.Face and Camera.FaceDetectionListener
Also make sure you call: getMaxNumDetectedFaces to make sure you device supports the API.