We added IsImageSimilar() to ImageMagick 6.2.8-4 Beta if anyone wants to
take a look at the solution to locating coordinates of a sub-image within
another image.  It works in all colorspaces and accounts for image masks.
Below a test program for IsImageSimilar().  Compile with:

  cc `Magick-config --cflags --cppflags` -o similar similar.c \
    `Magick-config --ldflags --libs`

  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  #include <time.h>
  #include <magick/MagickCore.h>
  
  int main(int argc,char **argv)
  {
    ExceptionInfo
      *exception;
  
    Image
      *crop_image,
      *image;
  
    ImageInfo
      *image_info;
  
    long
      x,
      y;
  
    RectangleInfo
      region;
  
    if (argc != 2)
      {
        (void) fprintf(stdout,"Usage: %s image\n",argv[0]);
        exit(0);
      }
    InitializeMagick(*argv);
    exception=AcquireExceptionInfo();
    image_info=CloneImageInfo((ImageInfo *) NULL);
    (void) strcpy(image_info->filename,argv[1]);
    image=ReadImage(image_info,exception);
    if (exception->severity != UndefinedException)
      CatchException(exception);
    if (image == (Image *) NULL)
      exit(1);
    region.width=100;
    region.height=100;
    region.x=100;
    region.y=100;
    crop_image=CropImage(image,&region,exception);
    x=0;
    y=0;
    IsImageSimilar(image,crop_image,&x,&y,exception);
    printf("%ld %ld\n",x,y);
    image=DestroyImageList(image);
    image_info=DestroyImageInfo(image_info);
    exception=DestroyExceptionInfo(exception);
    DestroyMagick();
    return(0);
  }
_______________________________________________
Magick-users mailing list
[email protected]
http://studio.imagemagick.org/mailman/listinfo/magick-users

Reply via email to