From: cristy Date: Sat, 19 Apr 2014 18:02:35 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~2442 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e21502df1174cd9c9b206897b8b45099e511b7b;p=imagemagick --- diff --git a/MagickCore/feature.c b/MagickCore/feature.c index c68d417a4..87b1b6c19 100644 --- a/MagickCore/feature.c +++ b/MagickCore/feature.c @@ -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); diff --git a/MagickCore/feature.h b/MagickCore/feature.h index 625369505..b3267c54e 100644 --- a/MagickCore/feature.h +++ b/MagickCore/feature.h @@ -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) diff --git a/MagickWand/convert.c b/MagickWand/convert.c index 62738ae87..2940372b9 100644 --- a/MagickWand/convert.c +++ b/MagickWand/convert.c @@ -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': diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index e2034bdee..ec0c8e4be 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -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': diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index e4eb6df61..2df8ecd76 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -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); diff --git a/PerlMagick/quantum/quantum.xs.in b/PerlMagick/quantum/quantum.xs.in index 57311f76c..db23d7767 100644 --- a/PerlMagick/quantum/quantum.xs.in +++ b/PerlMagick/quantum/quantum.xs.in @@ -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);