logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Image::Seek - A port of ImgSeek to Perl

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.

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.

Maintainer

       Helmut Wollmersdorfer <helmut.wollmersdorfer@gmail.com>

Name

       Image::Seek - A port of ImgSeek to Perl

See Also

Source Repository

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.

See Also