I'm trying to recognize the characters of a game using Java, so I can process them later.
The images look like this:
http://i.imgur.com/GM0XPgO.jpg
I want to recognize, specially, the 3w in the left-bottom, the 214 and 0.13 in the center and the 1m in the right-bottom.
Anyone have any idea?
This question is related to computer vision and I would suggest using this java OCR library from here:
http://ocrsdk.com/documentation/code-samples/
This will help you recognize English text present on image. I'm pretty sure that it will give you major texts from image.
PS: For image processing, using matlab or python would be better as they have good computer vision libraries like "Computer vision Toolbox for Matlab" and "OpenCv for python". Here are some examples for you task using matlab: http://www.mathworks.com/help/vision/ref/ocr.html
Related
Im working on a project now and there is something I dont know how to start work on.
I have a webcam connected to my computer and aiming to a screen that streaming number every few minutes.
I need to capture those number using my webcam...
How can I recognize those number ?
I tought to use openCV but I guess there is a better solution.
thanks
btw, I tought to work on this project in java but if you have a better solution I will glad to hear.
What you want to do is called OCR (Optical Character Recognition). I would recommend to you Google tesseract, a project on OCR that has even bindings for Python (language that I recommend for its simplicity in fields as machine learning and OCR).
Main project: https://github.com/tesseract-ocr
Python bindings: https://pypi.python.org/pypi/pytesseract
Here there is an example from the python bindings:
<!-- language: python -->
import Image
from PIL import Image
import pytesseract
print(pytesseract.image_to_string(Image.open('test.png')))
Of course there are bindings also for java. Precisely it is provided by javacv.
I have to develop an Android app that includes French handwriting recognition. The problem is I have no idea where I've to start.
I have installed and run an application called Thulika but it seems that it's designed for emailing and the handwriting option doesn't work.
I've beeng trying to do this for more than a month. If anyone has better and easier solutions to handwriting recognition, feel free to suggest.
If your need is to convert handwriting from a screen (where a user uses a pen or a finger to write letters) then look at http://dev.myscript.com/ .
If you need to recognize handwriting from an image, then I'm afraid state of the art of such technology is still in "stone age". Hopefully in few years after heavy R&D we will see few handwritten SDK's around.
There are many questions on SO on how to read images from webcams in Java, but judging by the answers there does not seem to be a library which is actively developed and maintained.
My question is if it would make any difference if I limited the OS to Linux only? I know there's a device representing video, /dev/video0, can that be used for reading image data from a webcam using java.io somehow?
Thanks in advance!
EDIT:
If you want to do something with the image, get opencv and its bindings, http://ubaa.net/shared/processing/opencv/
The page also has a link for Java example programs.
OLD_ANSWER:
You can use vlc, it has webcam support.
As far a Java is concerned, take a look the VLCJ project for the bindings.
http://code.google.com/p/vlcj/
For the OS bit of your question, on Linux webcam is implemented via v4l (video for linux) , but as far as I think, it won't be an issue for having it cross platform.
You could run a command (external program, started from your Java code) which is handling the video reading of the webcam. But what do you want to do with the video stream?
I'm currently trying to build an application in Java, which should be able to read QR tags from a couple of meters.
At the moment, I have JavaCV running, for capturing frames from my iSight on my MBP.
The problem is that it only supports a resolution of 640x480, which does not seem enough for ZXing to recognizing the QR tags.
I have been looking at a Logitech QuickCam Pro 9000, but I'm not entirely convinced, from my search, that it supports a high enough resolution for my project.
The application need to be platform agnostic, at least regarding OS X, Windows and Linux, which is the reason I'm doing it in Java.
My questions are:
Will the QucikCam pro record frames in 1080p as promised using the UVC drivers?
Is there a better camera?
Should I look at another framework than JavaCV and/or ZXing?
-Which?
thanks for the help
Resolution is not the issue; it decodes 320x240 regions on phones, as Barcode Scanner, easily. QR codes are especially simple to read. However if your QR code is in a tiny region of that 640x480 capture, like 50x30, yeah that's not going to be enough to decode reliably. I don't think any software could help you there.
I'd look at zooming in if you can.
Otherwise, I think you have some other issue; maybe the image data is in the wrong format somewhere
I am investigating the possibility of image processing to identify certain objects and also count them in an image.
I will be given a picture and I need to identify the number of boxes present in that image.
Does anybody have any experience with any Machine Vision/ Image Processing libraries like ImageJ, Fiji, JAI, jMagick ,Java Vision Toolkit? Which do you think is best suited for the job? What do you guys suggest? If the APIs can be used from Java, it would be better. Thank you.
Edit:
I am dealing with warehouse brown boxes. Yes I am talking about regular photos. The source is usually a mobile phone picture.
Edit2:
I am sorry the answer got autoselected. : (
I have never used the libraries you listed but I have used OpenCV.
OpenCV is a well supported and proven computer vision library. It has built in features to count the number of primitive shapes in an image. It is written in C++ but you could create a small wrapper to be invoked via JNI.
RoboRealm is another proven computer vision system used by robotic hobbyists. It is a closed source commercial product that uses a socket based control API.
http://opencv.willowgarage.com/wiki/FullOpenCVWiki
http://www.roborealm.com/index.php
If you must stick to Java, you can still use OpenCV.
If it's just boxes you can use Hough Transforms to detect them.
You can use OpenSURF to detect phones based on source images you feed to it.
Don't think this would be feasible in your case: HAAR Cascades. You could create a custom HAAR clasifier, but the training process can be quite time consuming.
HTH,
George
In Java, there are several projects that extend the Java Advanced Imaging API to provide computer vision:
JavaVis
image processing in java + IPJ - computer vision extensions for JAI
Java Vision Toolkit - JVT (EDIT: opps, this is mentioned in the question.)
There is a paper for JavaVis which introduces the library, compares and constrasts with these other two libraries mentioned.
JavaVis has these features:
handles 2D and 3D images (3D being most relevant in this case)
Has a GUI for inspecting potential results
Matlab image export
Also for java is NeatVision. Unlike the others, documentation is clearly visible for this project.
None of these projects are going to give you a simple turnkey solution. You will need to understand how computer vision works, and create a sequence of processing steps on the photos to help get the best results from the vision algorithms. To that end, JavaVis maybe most useful, since it is aimed towards teaching computer vision.
If you are not talking about real time image processing, you could write an API to Amazon Mechanical Turk.
Are you willing to develop your own code for that? There are several techniques that can be applied and tuned to your specific problem, but I never used a packaged library, always developed my own code. I can provide references for that if you're interested.