Object recognition with Kinect - opencv

I'm trying to recognize rectangular boxes using Kinect, I know I can use OpenCV or PCL to do this but my C++ is a bit rusty, I'm new to Computer Vision in 3D and I want to do it as quick as possible, it's only a demo for a bigger project.
Is there anyway to do it using C# or at least Python, I don't care if I have to learn 3D.
If not, which library should I use, OpenCV or PCL?

I recommend OpenCV.
If you want to work in C# or python with OpenCV then you have wrappers for both of them:
http://www.emgu.com/wiki/index.php/Main_Page
http://www.neuroforge.co.uk/index.php/getting-started-with-python-a-opencv

Related

OpenCV for iOS graphics app

I want to create a photo and video manipulation app for the iPad. The app would effect the imagery in various ways (using canny edge detection or bilateral blur for instance).
I saw some very interesting examples of canny edge detection using OpenCV, but is OpenCV the right tool to be looking into if I want to create a graphics app like this?
If so can anyone recommend some good reading materials to get me started.
Thanks for reading!
Yes, you certainly can use OpenCV on iOS. You simply cross-compile the code and include it in your project. OpenCV can easily do what you describe, and much more.
O'Reilly has published a great book on OpenCV, which is probably the best way to get up to speed. It explains the methods and how to use them, with plenty of sample code and images.
Learning OpenCV, Gary Bradski, Adrian Kaehler, O'Reilly 2012
There are a few sample projects around:
Sample OpenCV on iOS project
There are also numerous build scripts etc but note that they are probably not the latest version (2.4).

What libraries can I use to modify a video?

I'm new to video processing and I'm wondering what libraries I can use to do things like detecting letters, drawing boxes around them and so on. If you can name me a couple of good ones, I'd appreciate it very much!
OpenCV: (Open Source Computer Vision) is a cross-platform library of programming functions for real time computer vision.
It provides interfaces for both C and C++ programming laguages.
As for detecting the text region and drawing boxes around it, you can take a look at this article, which explains how to do this stuff using OpenCV. For better OCR capabilities I think that tesseract is the best open source tool available right now.
I've worked on a similar project some time ago and used OpenCV to detect the text region and then tesseract to do proper text recognition.

OpenCV + Webcam compatibility

For the people that have experience with OpenCV, are there any webcams that don't work with OpenCV.
I am looking into the feasibility of a project and I know I am going to need a high quality feed (1080p), so I am going to need a webcam that is capable of that. So does OpenCV have problems with certain cameras?
To be analysing a video feed of that resolution on the fly I am going to need a fast processor, I know this, but will I need a machine that is not consumer available...ie, will an i7 do?
Thanks.
On Linux, if it's supported by v4l2, it is probably going to work (e.g., my home webcam isn't listed, but it's v4l2 compatible and works out of the box). You can always use the camera manufacturer's driver to acquire frames, and feed them to your OpenCV code. You can even sub-class the VideoCapture class, and implement your camera driver to make it work seamlessly with OpenCV.
I would think the latest i7 series should work just fine. You may want to also check out Intel's IPP library for more optimized routines. IPP also easily integrates into OpenCV code since OpenCV was an Intel project at its inception.
If you need really fast image processing, you might want to consider adding a high performance GPU to the box, so that you have that option available to you.
Unfortunately, the page that I'm about to reference doesn't exist anymore. OpenCV evolved a lot since I first wrote this answer in 2011 and it's difficult for them to keep track of which cameras in the market are supported by OpenCV.
Anyway, here is the old list of supported cameras organized by Operating System (this list was available until the beginning of 2013).
It depends if your camera is supported by OpenCV, mainly by the driver model that your camera is using.
Quote from Getting Started with OpenCV capturing,
Currently two camera interfaces can be used on Windows: Video for Windows (VFW) and Matrox Imaging Library (MIL) and two on Linux: Video for Linux(V4L) and IEEE1394. For the latter there exists two implemented interfaces (CvCaptureCAM_DC1394_CPP and CvCapture_DC1394V2).
So if your camera is VFW or MIL compliant under Windows or suits into standard V4L or IEEE1394 driver model, then probably it will work.
But if not, like mevatron says, you can even sub-class the VideoCapture class, and implement your camera driver to make it work seamlessly with OpenCV.

How to use Opencv for Document Recognition with OCR?

I´m a beginner on computer vision, but I know how to use some functions on opencv. I´m tryng to use Opencv for Document Recognition, I want a help to find the steps for it.
I´m thinking to use opencv example find_obj.cpp , but the documents, for example passport, has some variables, name, birthdate, pictures. So, I need a help to define the steps for it, and if is possible how function I have to use on the steps.
I'm not asking a whole code, but if anyone has any example link or you can just type a walkthrough, it is of great help.
There are two very different steps involved here. One is detecting your object, and the other is analyzing it.
For object detection, you're just trying to figure out whether the object is in the frame, and approximately where it's located. The OpenCv features framework is great for this. For some tutorials and comprehensive sample code, see the OpenCv features2d tutorials and especially the feature matching tutorial.
For analysis, you need to dig into optical character recognition (OCR). OpenCv does not include OCR libraries, but I recommend checking out tesseract-ocr, which is a great OCR library. If your documents have a fixed structured (consistent layout of text fields) then tesseract-ocr is all you need. For more advanced analysis checking out ocropus, which uses tesseract-ocr but adds layout analysis.

Computer Vision with Mathematica

Does anybody here do computer vision work on Mathematica? I would like to know what external libraries are available for doing that. The built in image processing functions are not enough. I am looking for things like SURF, stereo, camera calibration, multi-view geometry etc.
How difficult would it be to wrap OpenCV for use in Mathematica?
Apart from the extensive set of image processing tools that are now (version 8) natively present in Mathematica, and which include a number of CV algorithms like finding morphologic objects, image segmentation and feature detection (see figure below), there's the new LibraryLink functionality, which makes working with DLLs very easy. You wouldn't have to change OpenCV much to be able to call it from Mathematica. Just some wrappers for the functions to be called and you're basically done.
I don't think such a thing exists, but I'm getting started.
It has the advantage that you can perform some analytic methods... for example rather than hacking in openCV or even Matlab endlessly, you can compute analytically a quantity, and see that the method leading to this matrix is numerically unstable as a function of input variables. Thus you do not need to hack, as it would be pointless.
As for wrapping opencv, that doesn't seem to make sense. The correct procedure would be to fix bad implementations in opencv based on your analysis in Mathematica and on paper.
Agreeing with Peter, I don't believe that forcing Mathematica to use OpenCV is a great thing.
All of the computer vision people that I've talked to, read about, and seen examples are using Matlab and the Imaging toolkit. Its either that, or go with a OpenCV compatible language + OpenCV.
Mathematica has a rich set of tools for image processing, but I'm uncertain about the computer vision capabilities.

Resources