Question

J'essaie d'effectuer une morphologie en utilisant Magick ++ à partir d'un programme C ++ que j'écris. Je ne trouve pas comment utiliser les méthodes de morphologie de C ++.

J'essaie d'effectuer ce qui suit (nous nous convertissons de Perl):

$q=Image::Magick->new;
$q->Read("blah.jpg");
$q->Morphology(method => 'Close', kernel => 'Diamond:4');

Cela ne peut-il pas être fait avec Just Magick ++?

J'ai trouvé ce site,http://www.imagemagick.org/api/magickcore/morphology_8h.html , mais je ne sais pas si ce n'est que le code source d'imageMagick lui-même.

Était-ce utile?

La solution

Il semble que Magick ++ n'a pas la capacité de faire de la morphologie. Au lieu de cela, les appels de la bibliothèque MagickCore doivent être utilisés (ce qui signifie que vous ne pouvez plus utiliser les classes Magick ++):

ExceptionInfo *e;
ImageInfo *ii;
Image *i;

e = AcquireExceptionInfo();
ii = CloneImageInfo((ImageInfo *) NULL);

strcpy(ii->filename, vm["input"].as<string>().c_str());
i = ReadImage(ii, e);
i = MorphologyImage(i, CloseMorphology, 3, AcquireKernelInfo("Diamond:4"), e);

C'est plus compliqué, et il n'y a pas de traitement d'erreur comme dans Magick ++, mais cela fonctionne.

Pour voir tout ce qui est disponible dans la bibliothèque de Magickcore, jetez un œil ici: http://www.imagemagick.org/api/magickcore/index.html

Autres conseils

Zsalzbank Une partie de la réponse que vous avez donnée est incorrecte "(ce qui signifie que vous ne pouvez plus utiliser les classes Magick ++)"

Les API Magick ++ et Magickcore sont conçues pour interagir avec l'autre.

Vous pouvez vous convertir comme ...

MagickCore::Image* img_core = img->image();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top