Morfologia usando Magick ++
-
12-11-2019 - |
Domanda
Sto cercando di eseguire la morfologia usando Magick ++ da un programma C ++ che sto scrivendo. Tuttavia, non riesco a trovare come usare i metodi di morfologia di C ++.
Sto cercando di eseguire quanto segue (stiamo convertendo da Perl):
$q=Image::Magick->new;
$q->Read("blah.jpg");
$q->Morphology(method => 'Close', kernel => 'Diamond:4');
Questo non può essere fatto solo con Magick ++?
Ho trovato questo sito,http://www.imagemagick.org/api/magickcore/morphology_8h.html , ma non sono sicuro che questo sia solo il codice sorgente dello stesso ImageMagick.
Soluzione
Sembra che Magick ++ non abbia la capacità di fare morfologia. Invece, le chiamate della libreria Magickcore devono essere utilizzate (il che significa che non puoi più usare le classi 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);
È più complicato e non c'è alcuna gestione degli errori come in Magick ++, ma funziona.
Per vedere tutto disponibile nella biblioteca Magickcore, dai un'occhiata qui: http://www.imagemagick.org/api/magickcore/index.html
Altri suggerimenti
Zsalzbank parte della risposta che hai dato non è corretta "(il che significa che non puoi più usare le classi Magick ++)"
Le API Magick ++ e Magickcore sono progettate per interagire tra loro.
Puoi convertirsi così ...
MagickCore::Image* img_core = img->image();