]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 19 Apr 2014 18:02:35 +0000 (18:02 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 19 Apr 2014 18:02:35 +0000 (18:02 +0000)
MagickCore/feature.c
MagickCore/feature.h
MagickWand/convert.c
MagickWand/mogrify.c
PerlMagick/Magick.xs
PerlMagick/quantum/quantum.xs.in

index c68d417a42fb795e5c658e6a1d462809f9dbf022..87b1b6c19845bc2ec1e2785611fce02648db19b5 100644 (file)
@@ -554,17 +554,17 @@ MagickExport Image *CannyEdgeImage(const Image *image,const double radius,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%     H o u g h T r a n s f o r m I m a g e                                   %
+%     H o u g h L i n e s I m a g e                                           %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  HoughTransformImage() detects lines in an image.
+%  HoughLinesImage() identifies lines in an image.
 %
-%  The format of the HoughTransformImage method is:
+%  The format of the HoughLinesImage method is:
 %
-%      Image *HoughTransformImage(const Image *image,const size_t width,
+%      Image *HoughLinesImage(const Image *image,const size_t width,
 %        const size_t height,const size_t threshold,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
@@ -578,7 +578,7 @@ MagickExport Image *CannyEdgeImage(const Image *image,const double radius,
 %    o exception: return any errors or warnings in this structure.
 %
 */
-MagickExport Image *HoughTransformImage(const Image *image,const size_t width,
+MagickExport Image *HoughLinesImage(const Image *image,const size_t width,
   const size_t height,const size_t threshold,ExceptionInfo *exception)
 {
   return((Image *) NULL);
index 625369505265f0d005d00802d015cf60120217de..b3267c54e9ab1f91d54f9b690cfb22fadb9e886e 100644 (file)
@@ -50,7 +50,7 @@ extern MagickExport ChannelFeatures
 extern MagickExport Image
   *CannyEdgeImage(const Image *,const double,const double,const double,
     const double,ExceptionInfo *),
-  *HoughTransformImage(const Image *,const size_t,const size_t,const size_t,
+  *HoughLinesImage(const Image *,const size_t,const size_t,const size_t,
     ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
index 62738ae87e836d304b374fd00277061341517490..2940372b9c393525e15d46fd5d19e15545d7cc93 100644 (file)
@@ -1733,6 +1733,17 @@ WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info,
         if ((LocaleCompare("help",option+1) == 0) ||
             (LocaleCompare("-help",option+1) == 0))
           return(ConvertUsage());
+        if (LocaleCompare("hough-lines",option+1) == 0)
+          {
+            if (*option == '+')
+              break;
+            i++;
+            if (i == (ssize_t) (argc-1))
+              ThrowConvertException(OptionError,"MissingArgument",option);
+            if (IsGeometry(argv[i]) == MagickFalse)
+              ThrowConvertInvalidArgumentException(option,argv[i]);
+            break;
+          }
         ThrowConvertException(OptionError,"UnrecognizedOption",option)
       }
       case 'i':
index e2034bdeee3049f7d9ffcca7f318012c884b5b6d..ec0c8e4be33099cb52b59790e77ce46d7615ae22 100644 (file)
@@ -1797,6 +1797,19 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             (void) SetImageArtifact(*image,option+1,argv[i+1]);
             break;
           }
+        if (LocaleCompare("hough-lines",option+1) == 0)
+          {
+            /*
+              Detect edges in the image.
+            */
+            (void) SyncImageSettings(mogrify_info,*image,exception);
+            flags=ParseGeometry(argv[i+1],&geometry_info);
+            if ((flags & SigmaValue) == 0)
+              geometry_info.sigma=geometry_info.rho;
+            mogrify_image=HoughLinesImage(*image,(size_t) geometry_info.rho,
+              (size_t) geometry_info.sigma,(size_t) geometry_info.xi,exception);
+            break;
+          }
         break;
       }
       case 'i':
index e4eb6df61d1358c02072b3cb1f40b5a686d1c684..2df8ecd7639db29c46ec9cc5d5b3fee3c18529e2 100644 (file)
@@ -547,6 +547,9 @@ static struct
     { "CannyEdge", { {"geometry", StringReference},
       {"radius", RealReference}, {"sigma", RealReference},
       {"lower-percent", RealReference}, {"upper-percent", RealReference} } },
+    { "HoughLines", { {"geometry", StringReference},
+      {"width", IntegerReference}, {"height", IntegerReference},
+      {"threshold", IntegerReference} } },
   };
 
 static SplayTreeInfo
@@ -7530,6 +7533,8 @@ Mogrify(ref,...)
     GrayscaleImage     = 276
     CannyEdge          = 278
     CannyEdgeImage     = 279
+    HoughLines         = 280
+    HoughLinesImage    = 281
     MogrifyRegion      = 666
   PPCODE:
   {
@@ -11132,6 +11137,25 @@ Mogrify(ref,...)
             (void) SetImageChannelMask(image,channel_mask);
           break;
         }
+        case 139:  /* HoughLines */
+        {
+          if (attribute_flag[0] != 0)
+            {
+              flags=ParseGeometry(argument_list[0].string_reference,
+                &geometry_info);
+              if ((flags & SigmaValue) == 0)
+                geometry_info.sigma=geometry_info.rho;
+            }
+          if (attribute_flag[1] != 0)
+            geometry_info.rho=(double) argument_list[1].integer_reference;
+          if (attribute_flag[2] != 0)
+            geometry_info.sigma=(double) argument_list[2].integer_reference;
+          if (attribute_flag[3] != 0)
+            geometry_info.xi=(double) argument_list[3].integer_reference;
+          image=HoughLinesImage(image,(size_t) geometry_info.rho,(size_t)
+            geometry_info.sigma,(size_t) geometry_info.xi,exception);
+          break;
+        }
       }
       if (next != (Image *) NULL)
         (void) CatchImageException(next);
index 57311f76c0f384e166ee12bdcd36446a768528e2..db23d77677866584f873f1ff8e15710f8a59631f 100644 (file)
@@ -547,6 +547,9 @@ static struct
     { "CannyEdge", { {"geometry", StringReference},
       {"radius", RealReference}, {"sigma", RealReference},
       {"lower-percent", RealReference}, {"upper-percent", RealReference} } },
+    { "HoughLines", { {"geometry", StringReference},
+      {"width", IntegerReference}, {"height", IntegerReference},
+      {"threshold", IntegerReference} } },
   };
 
 static SplayTreeInfo
@@ -7530,6 +7533,8 @@ Mogrify(ref,...)
     GrayscaleImage     = 276
     CannyEdge          = 278
     CannyEdgeImage     = 279
+    HoughLines         = 280
+    HoughLinesImage    = 281
     MogrifyRegion      = 666
   PPCODE:
   {
@@ -11132,6 +11137,25 @@ Mogrify(ref,...)
             (void) SetImageChannelMask(image,channel_mask);
           break;
         }
+        case 139:  /* HoughLines */
+        {
+          if (attribute_flag[0] != 0)
+            {
+              flags=ParseGeometry(argument_list[0].string_reference,
+                &geometry_info);
+              if ((flags & SigmaValue) == 0)
+                geometry_info.sigma=geometry_info.rho;
+            }
+          if (attribute_flag[1] != 0)
+            geometry_info.rho=(double) argument_list[1].integer_reference;
+          if (attribute_flag[2] != 0)
+            geometry_info.sigma=(double) argument_list[2].integer_reference;
+          if (attribute_flag[3] != 0)
+            geometry_info.xi=(double) argument_list[3].integer_reference;
+          image=HoughLinesImage(image,(size_t) geometry_info.rho,(size_t)
+            geometry_info.sigma,(size_t) geometry_info.xi,exception);
+          break;
+        }
       }
       if (next != (Image *) NULL)
         (void) CatchImageException(next);