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.

È stato utile?

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top