Vollständige Bildunterstützung bei der Einbindung von C-Bibliotheken
Eine neue Funktionalität von LibraryLink ist das direkte Versenden von Image-Objekte aus und nach externen Bibliotheken.
Hier ist ein Beispiel, wie man ein Foto im Sepia-Effekt erzeugt. Die Grundlage ist ein bestimmtes Foto im 32-bit Datentyp. Das komplette Beispiel finden Sie hier.
static void isepia(raw_t_real32 *out, raw_t_real32 *in, mint width,
mint height, mint channels) { for (mint ii = 0; ii < height; ii++) { for (mint jj = 0; jj < width; jj++) { for (mint kk = 0; kk < channels; kk++) { mint index = channels * (ii * width + jj); raw_t_real32 r = in[index + 0]; ... out[index + 0] = r * static_cast<raw_t_real32>(0.393) + g * static_cast<raw_t_real32>(0.769) + b * static_cast<raw_t_real32>(0.189); ... for (int ii = 3; ii < channels; ii++) { out[index + ii] = in[index + ii]; } } } } return; } EXTERN_C DLLEXPORT int speia(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument res) {
...
data_in = imgFuns->MImage_getReal32Data(image_in); data_out = imgFuns->MImage_getReal32Data(image_out); ... ispeia(data_out, data_in, width, height, channels); MArgument_setMImage(res, image_out); return LIBRARY_NO_ERROR; }
Laden Sie die Funktion aus der Bibliothek.
In[1]:= | ![]() X |
Out[1]= | ![]() |
Wenden Sie die Funktion auf jedes beliebige Bild an.
In[2]:= | ![]() X |
Out[2]= | ![]() |