I want my android app to recognise millions of images. So i want to know if openCv is a choice for this solution. I want an image to be compared against a huge ( millions ) of reference images and find if any matches . Is this can be achieved with efficiency when opencv is used
Depending upon the algorithm you're using the time varies.
Here's something about what you're asking. As Tushar stated it's better to do these computations on a server and return the results rather than on the client device. Although the code I'm going to post below showed tremendous speed on a Galaxy SIII.
Also, if you'd like some sample code, take a look here.
Related
I want to do Face recoginition (Not Face Detection) in my Android and iOS app. I have studied a lot on Web and found following possible solutions:
1.) openCV: I don't want to go into writing my own API using this. Also, I don't have prior experience in JNI for Android.
2.) Betaface API So far this is good.
3.) Sky Biometrics is also Good.
Now, I am searching for the solution from 3-5 days and came to know that I can use above API (so far I have decided to purchase license for Sky Biometrics). And this API will provide me a list of Features for the faces it recognised.
But, Now I am confused That how to use these features and save in my local data base to recognise faces from the pictures.So My queries are following
1.) How to convert Face features to Actual working Face recognition API means What is the actual algo or solution I can use to merge diffrent face features of a same person to identify him correctly.
2.) Uploading images and then creating database for Face-features set is a very time taking process. Do any one knows any Android/iOS Face Recoginition SDK to do this so that I can do this accurately and timely with no or less time taking process.
3.) Both solution-2 and 3 can be used with Images. Is there any other solution is available which can do the same with less efforts but with more accuracy.
OpenBR may be also interesting for you: http://openbiometrics.org/
Finally I am using Rekognition API. And this is good enough to serve my purpose.
Right now I'm making an OCR app using Android OCR rmtheis(https://github.com/rmtheis/android-ocr) as a scaffold.
However, I'm far from satisfied.
My main issues:
It returns only a fraction of the containing characters correct when scanning ultra-tiny texts with a few different fonts with
irrelavant clutter such as images and barcodes included (from a
product manual in this case).
The autofocus is looping in a way that if you press the camerabutton when the image is as it's sharpest shape, you might be
0.02 seconds too late and scan the blurry image. So I prefer an autocapture when text is included in the selected view.
Is there any high quality OCR solutions for Android that can capture tricky and small text and getting it all correct almost every time?
Just to clarifie: I use tesseract(tess-two) already through the android-ocr project
On another note: It needs to return close to 100% correct results almost everytime. No language support required, Im only going to use it to catch codes such as 842EAB842EAB842EAB84?2EAB842EAB842EAB with irrelevant english text besides it. Therefore, I need no language support at all.
Edit: This seems to be what I'm looking for:
http://www.abbyy.com/mobileocr/features/
Is there any solution with even higher quality output than Abbyy?
I've also been researching for high quality and free OCR solutions for Android, and finally I've chosen tess-two fork in one of my projects because other options had more disadvantages than advantages. As #realkarim says, it's not 100% accurate but the results are optimal.
Link for an OCR example using tess-two
Try it and comment us your experience ;)
Well, a year ago I was planning to create an Android application in which I needed an OCR, first of all and I'm sorry to say that but you won't find a free "high quality OCR solutions for Android" :/ I used tess-two which is the best free OCR available for android but still it wasn't 100% accurate, probably if I had more time I could add some image processing to enhance the output.
link for the OCR:
https://github.com/rmtheis/tess-two
an example of a running application using it:
http://www.youtube.com/watch?v=Ho5DyK1hKdw
my application:
http://www.youtube.com/watch?v=2PRQo7EWYd8
try it, and add some image processing to the image before using the OCR if you can :)
I want to develop app which will recognize object(like monument or something) present in front of camera using OpenCv and then it will show information about it.
So the question is how to recognize object(like monument or something) shape or compare to images with OpenCV?
And what is the best method for doing this?
It would be good if there was some kind of samples or tutorials for object detection and comparison.
Thank you.
The best method for what you ask is using local features detectors like OpenCV's SIFT, SURF and ORB, for example.
You need at least one picture from the object you want to detect. Afterwards, those algorithms can compare that image with other images to see if they are similar enough.
Here is the Documentation for the algorithms.
ORB and others:
http://docs.opencv.org/modules/features2d/doc/feature_detection_and_description.html
SURF and SIFT ('nonfree'):
http://docs.opencv.org/modules/nonfree/doc/feature_detection.html
The way these algorithms work for that task is by selecting interesting points for each image, and compare them to see if they match. If several matches are found, it is most likely the images have the same object.
Tutorials (from Feature Detection and below):
http://docs.opencv.org/doc/tutorials/features2d/table_of_content_features2d/table_of_content_features2d.html
You can also find C++ samples related to this topic here (samples are also within OpenCV download package):
eg. "matching_to_many_images.cpp"
"video_homography.cpp"
http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/cpp
And Android Java samples here (unrelated but also helpful):
http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/android
Or Python samples which are actually the more updated ones for this topic (at the time this post was written):
http://code.opencv.org/projects/opencv/repository/revisions/master/show/samples/python2
As a final note, like #BDFun said in the comment, this is not trivial to do.
More - if you want an overview of OpenCV Feature detection and description, check this post.
I've been thinking about working on an application. You take a picture of something at a yard sale and it compares it against an image database.
For example say you take a picture of a spoon, and compares the image taken against images in the database and throws back to the user the top 5 possible matches.
Is this possible with current Android?
If so point me in the right direction, for stuff I'd need.
Thanks,
abolbridge
Look forward to your guys feedback.
That is rather possible, but too much CPU consuming and therefore not possible on Android itself. You'd have to build a serverside application for that.
It is going to be hard though. Quite.
Take a look at Google Goggles for an idea. The image processing is entirely made on the server side.
Check out openCV, as it contains a lot of useful object recognition functions and can be used on android. However, this approach will push the limits of the phones CPU and more so, its memory when using higher resolution images. A server-side implementation may be more appropiate.
I'd like to make an Android app that lets a user apply cool effects to photos taken with the camera. There are already a few out there, I know, but I'd like to try my own hand at one.
I have been googling and stack-overflowing, but so far I've mostly found some references to published papers or books. I am ordering this one from Amazon presently - Digital Image Processing: An Algorithmic Introduction using Java
After some reading, I think I have a basic understanding of manipulating the RGB values for all the pixels in the image. My main question is how do I come up with a transformation that produces cool effects?
By cool effects I mean some like those in these iPhone apps:
ToyCamera
Polarize
I already have quite a bit of experience with Java, and I've made my first app for android already. Any ideas? Thanks in advance.
There are specific classes to do this for you!
Take a look here for grayscale image processing
Here is something in C# which is similar enough to java that you should get the idea.
If you want to do something unique you might have to experiment with the tweaking of the RGB ratios yourself.