Bibliotecă cu sursă deschisă de procesare mai rapidă a imaginilor pentru C++
Creați, manipulați, desenați, împărțiți, copiați și convertiți formate de imagine populare; Aplicați filtre, împărțiți două imagini, plasați o imagine prin intermediul Bibliotecii C++ gratuite.
Libvips este o bibliotecă de procesare avansată a imaginilor cu sursă deschisă, care utilizează memorie foarte scăzută și efectuează operațiuni foarte rapide. Biblioteca poate gestiona cu ușurință imagini mari și acceptă o gamă decentă de formate de fișiere de imagine, cum ar fi JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyze, NIfTI, DeepZoom și OpenSlide. Poate încărca cu ușurință imagini prin ImageMagick sau GraphicsMagick, permițându-i să funcționeze cu formate precum DICOM.
Primitivele libvips sunt aplicate în mod rațional, iar unele folosesc tehnici precum generarea de cod în timpul rulării ajută la procesarea rapidă a imaginilor. În comparație cu alte biblioteci de procesare a imaginilor, sa observat că libvips-ul necesită puțină memorie RAM și rulează mai rapid, în special pe mașinile cu mai multe procesoare. Acest lucru se datorează în principal arhitecturii inteligente pe care o folosește, care împarte automat fluxurile de lucru ale imaginii.
Biblioteca oferă suport pentru o gamă largă de tipuri numerice, de la simplu int de 8 biți până la complexul de 128 de biți. Majoritatea bibliotecilor de procesare a imaginilor folosesc operațiuni cu fire de execuție, dar libvips-ul, pe de altă parte, pune threading-ul în sistemul IO de imagine și atribuie o copie a întregii conducte de imagine fiecărui fir de execuție pentru a lucra la el. Acest stil de threading orizontal folosește mai bine memoria cache a procesorului și reduce blocarea.
Biblioteca libvips este o bibliotecă de procesare a imaginilor care oferă performanțe mai bune decât multe alte biblioteci. Biblioteca a oferit suport pentru câteva funcții importante de procesare a imaginii, cum ar fi desenarea imaginilor, împărțirea a două imagini, desenarea unui cerc pe o imagine, copierea unei imagini, pictarea unei imagini într-o altă imagine, trasarea unei linii pe o imagine, turnarea unei imagini, cache-ul o imagine, adăugați două imagini, faceți o imagine gaussiană, citiți un punct dintr-o imagine, grilați o imagine, salvați imaginea în fișierul JPEG și multe altele.
Noțiuni introductive cu libvips
Clonează cele mai recente surse utilizând următoarea comandă.
Instalați libvips prin comanda git
git clone git://github.com/libvips/libvips.git
Construirea din git are nevoie de mai multe pachete, veți avea nevoie de cel puțin gtk-doc și gobject-introspection.
Instalați pachetele libvips prin comanda git
./autogen.sh
make
sudo make install
Redare mai rapidă a imaginilor prin API-ul C++
Biblioteca libvips a oferit funcționalități pentru crearea și manipularea mai rapidă a imaginilor pe toate platformele principale. Unele dintre cele mai importante biblioteci de procesare a imaginilor, cum ar fi bibliotecile ImageMagick și GD, sunt foarte puternice și oferă caracteristici avansate pentru lucrul cu imagini, dar au nevoie de o cantitate mare de memorie pentru procesarea imaginilor. Pe de altă parte, libvips poate face practic aceleași activități ca ImageMagick, dar mult mai rapid și cu o amprentă de memorie relativ mică.
Salvați imaginea în alte formate acceptate
Biblioteca open source libvips a oferit un set de operațiuni care încarcă și salvează imagini într-o varietate de formate. Biblioteca a inclus suport încorporat pentru salvarea imaginilor în formate populare precum TIFF, JPEG, PNG, Analiză, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF și VIPS. VipsForeign poate fi folosit pentru a încărca și salva imagini într-o varietate de formate.
Citiți și scrieți imagini în memorie prin API-ul C++
int
main( int argc, char **argv )
{
gchar *buf;
gsize len;
int i;
if( VIPS_INIT( argv[0] ) )
vips_error_exit( NULL );
if( argc != 2 )
vips_error_exit( "usage: %s FILENAME", argv[0] );
if( !g_file_get_contents( argv[1], &buf, &len, NULL ) )
vips_error_exit( NULL );
for( i = 0; i < 10; i++ ) {
VipsImage *image;
void *new_buf;
size_t new_len;
printf( "loop %d ...\n", i );
if( !(image = vips_image_new_from_buffer( buf, len, "",
"access", VIPS_ACCESS_SEQUENTIAL,
NULL )) )
vips_error_exit( NULL );
if( vips_image_write_to_buffer( image,
".jpg", &new_buf, &new_len,
"Q", 95,
NULL ) )
vips_error_exit( NULL );
g_object_unref( image );
g_free( new_buf );
}
g_free( buf );
vips_shutdown();
return( 0 );
}
Redimensionarea mai rapidă a imaginii
Biblioteca libvips open source oferă dezvoltatorilor de software puterea de a redimensiona imaginile din mers în interiorul propriilor aplicații. Mai întâi, trebuie să încărcați imaginea din depozitul de imagini, furnizând un nume de imagine și o adresă completă. După aceea, îl puteți redimensiona la lățimea și înălțimea specificate, în funcție de nevoile dvs. După aceea, îl puteți salva în locația dorită cu noua dimensiune.
Citiți și scrieți imagini în memorie prin API-ul C++
int
vips_resize( VipsImage *in, VipsImage **out,
double scale, ... )
{
va_list ap;
int result;
va_start( ap, scale );
result = vips_call_split( "resize", ap, in, out, scale );
va_end( ap );
return( result );
}
Filtrarea imaginilor prin API-ul C++
Filtrarea imaginilor este o caracteristică valoroasă care este utilizată în diverse aplicații de procesare a imaginilor și viziune computerizată de pe tot globul. Biblioteca libvips oferă suport complet pentru filtrarea imaginilor prin comenzile C++. Caracteristici precum netezirea, clarificarea și îmbunătățirea marginilor sunt câteva exemple de operațiuni de procesare a imaginilor implementate cu filtrare. Biblioteca a inclus și filtre PNG, cum ar fi diferența la stânga, o medie a stânga și în sus, adaptiv, alegerea automată a predictorului cel mai bun vecin și fără filtrare. De asemenea, include filtre de import care se pot încărca cu libMagick și cu OpenSlide.