Learning and searching objects:

The purpose of searching objects is to find objects (e. g. a Robosapien, a can of cola, ...) in the current view. To do this, Evo has to learn how the object looks like, so you have to teach it first.

Learning objects:
For Evo, an object is not simply an image: It is its shape. To teach Evo a new object, put it on a unicolored sheet without wrinkles.

Place the cam in front of it and measure the distance beteween the object and the camera.

Select the function 'Learn new object'. Select a threshold (more information under edge detection) so that the edges of the object are clearly visible. Important: Only the edges of the objects may appear, not the edges of the background (e. g. the sheet or wrinkles in the sheet). You may also disable greyscale mode. The outer edge of the object should be a closed line, but this is not always possible. You should see the object in the left upper corner of the bottom screen.

Enter the distance between the cam and the object, click the save button and save the shape.

Search objects:
Select function 'Search object'. Set threshold, greyscale mode and 'remove noise' as explained under 'Edge detection'. Enter the current distance between the cam and the object. Click the open button and open the shape file of the object.
Now click the search button. Searching may take seconds, but 1 or 2 minutes are also possible. You might have the impression that the program hangs, but normally, it's just working. Just wait for a while.
When Evo is done, it will set a yellow cross at the center of the object (sometimes hard to see) and display the coordinates of this pixel in the status strip.

Remark: The object must fit into the cam view completely, but it may be hidden by other objects partly.
If you want Evo to search in a certain, rectangular area only, enter the coordinates (x, y) of the left top corner of the area behind 'From' and the coordinates of the right bottom corner behind 'To'.

You can download a demo video here:


This following tutorial is not yet complete.

Advanced information:
You can also create object shape file manually. Create a bitmap file. Set pixels that represent an edge pixel to white, pixels that are not edges but belong to the object to black and pixels that do not belong to the object to transparent. Save the bitmap. Since you have to add distance information in the filename (see how 'Learn new object' names the files), you need to calculate from which distance the object will have the size it has in your bitmap. In the example below you will find a very simple trick for this.

Advanced example:
I want Evo to find arbitrary cans. So I take a can and perform a 'Learn new object' procedure. I get the following shape file:

Since I wanted to find arbitrary cans, the texture of the can (i. e. the letters and so on) are disturbing. (Even turning the can around would be fatal because it looks completely different on the backside.) So I create the following idealized shape file of can with a photo editor program:


I set the pixels where the texture is to transparent, so the texture will be ignored when Evo searches for the object.
As you can see, the proportions of the old and the new shape are the same, but the absolute size is different. The originial height was ... pixels and the new one is ... pixels. (The original distance was ....) You can calculate the distance information for the new shape file by:
new distance = old distance * old height / new height = ... * ... / ... = ... (round to next integer)
Finally I use 'Search object' with the new, manually created shape file.