---
name: "Image::Seek"
section: "3pm"
platform: "linux"
package: "libimage-seek-perl"
version: "0.06-3+b4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Image::Seek"
---

# Image::Seek(3pm)

A port of ImgSeek to Perl

## NAME

Image::Seek - A port of ImgSeek to Perl

## SYNOPSIS

```
    use Image::Seek qw(loaddb add_image query_id savedb);
    loaddb("haar.db");
    # EITHER
    my $img = GD::Image->newFromJpeg("photo-216.jpg", 1);
    # OR
    my $img = Imager->new();
    $img->open(file => "photo-216.jpg");
    # OR
    my $img = Image::Imlib2->load("photo-216.jpg");
    # Then...
    add_image($img, 216);
    savedb("haar.db");
    my @results = query_id(216); # What looks like this photo?
    remove_id(216); # Just remove id from database.
```

## DESCRIPTION

ImgSeek (http://www.imgseek.net/) is an implementation of Haar wavelet decomposition techniques to find similar pictures in a library. This module is port of the ImgSeek library to Perl's XS. It can deal with image objects produced by the `"Imager"`, `"Image::Imlib2"` and `"GD"` libraries.

## EXPORT

None by default, but the following functions are available:

### savedb($file)

Dumps the state of the norms and image buckets to the file `$file`.

### loaddb($file)

Loads a database of image norms produced by savedb

### cleardb

Clears the internal database. Note that `"loaddb"` will load into memory a bunch of data that you may already have - it will duplicate rather than replace this data, so results will be skewed if you load a database multiple times without clearing it in between.

### add\_image($image, $id)

Adds the image object to the database, keyed against the numeric id `$id`. This will compute the Haar transformation for a 128x128 thumbnail of the image, and then store its norms into a database in memory.

### remove\_id($id)

remove id from database, and you should `"savedb"` to save the changed database.

### query\_id($id\[, $results))

This queries the internal database for pictures which are "like" number `$id`. It returns a list of `$results` results (by default, 10); a result is an array reference. The first element is the ID of a picture, the second is a score. So for example:

```
    query_id(2481, 5)
```

returns, in a shoot I have, the following:

```
          [ 2481, -38.3800003528595 ],
          [ 2480, -37.5519620793145 ],
          [ 2478, -37.39896965962   ],
          [ 2479, -37.2777427507208 ],
          [ 2584, -10.0803730081134 ],
          [ 2795, -7.89326129961427 ]
```

Notice that the scores go the opposite way to what you might imagine: lower is better. The results come out sorted, and the first result is the thing you queried for.

### addImage($id, $reds, $greens, $blues)

Internally used.

### add\_image\_magick($image, $id)

Internally used.

### add\_image\_gd($image, $id)

Internally used.

### add\_image\_imager($image, $id)

Internally used.

### add\_image\_imlib2($image, $id)

Internally used.

### constant

Internally used.

### queryImgID

Internally used.

### removeID

Internally used.

### results

Internally used.

## SEE ALSO

http://www.imgseek.net/

## SOURCE REPOSITORY

\<http://github.com/wollmers/Image-Seek\>

## MAINTAINER

Helmut Wollmersdorfer \<helmut.wollmersdorfer@gmail.com\>

## AUTHOR

Simon Cozens, \<simon@cpan.org\<gt\> Lilo Huang, \<kenwu@cpan.org\> Helmut Wollmersdorfer, \<helmut.wollmersdorfer@gmail.com\>

All the clever bits were written by Ricardo Niederberger Cabral; Simon Cozens just mangled them to wrap Perl around them.

## COPYRIGHT AND LICENSE

Copyright (C) 2005 by Simon Cozens, 2008 by Lilo Huang, 2015 Helmut Wollmersdorfer

This library is free software; as it is a derivative work of imgseek, this library is distributed under the same terms (GPL) as imgseek.
