1. Termékek
  2.   Kép
  3.   C++
  4.   libvips
 
  

Nyílt forráskódú Gyorsabb képfeldolgozási könyvtár C++-hoz

Népszerű képformátumok létrehozása, manipulálása, rajzolása, felosztása, másolása és konvertálása; Szűrők alkalmazása, két kép felosztása, egy kép rácsozása a Free C++ Library segítségével.

A libvips egy nyílt forráskódú fejlett képfeldolgozó könyvtár, amely nagyon kevés memóriát használ, és nagyon gyors műveleteket hajt végre. A könyvtár könnyen kezeli a nagy képeket, és támogatja a képfájlformátumok széles skáláját, például JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyze, NIfTI, DeepZoom és OpenSlide. Könnyedén betölthet képeket az ImageMagick vagy a GraphicsMagick segítségével, lehetővé téve, hogy olyan formátumokkal működjön együtt, mint a DICOM.

A libvips primitíveket ésszerűen alkalmazzák, és egyes technikák, például a futásidejű kódgenerálás segíti a képek gyors feldolgozását. Más képfeldolgozó könyvtárakhoz képest megjegyezték, hogy a libvips kevés RAM-ot igényel, és gyorsabban fut, különösen a több CPU-val rendelkező gépeken. Ez elsősorban az általa használt intelligens architektúrának köszönhető, amely automatikusan felosztja a képi munkafolyamatokat.

A könyvtár számos numerikus típushoz nyújt támogatást, az egyszerű 8 bites inttől az összetett 128 bitesig. A legtöbb képfeldolgozó könyvtár szálas műveleteket használ, de a libvips a szálfűzést a kép IO-rendszerébe helyezi, és minden szálhoz hozzárendeli a teljes képfolyam egy másolatát, hogy dolgozzon rajta. Ez a vízszintes szálfűzési stílus jobban kihasználja a processzor gyorsítótárait, és csökkenti a zárolást.

A libvips könyvtár egy képfeldolgozó könyvtár, amely jobb teljesítményt nyújt, mint sok más könyvtár. A könyvtár számos fontos képfeldolgozási funkcióhoz nyújtott támogatást, mint például képek rajzolása, két kép felosztása, kör rajzolása egy képre, kép másolása, kép más képpé festése, vonal rajzolása a képre, kép öntése, gyorsítótár egy képet, adjon hozzá két képet, készítsen Gauss-képet, olvasson ki egy pontot a képből, rácsozzon egy képet, mentse a képet JPEG fájlba és még sok más.

Previous Next

A libvips első lépései

Klónozza a legújabb forrásokat a következő paranccsal.

Telepítse a libvips-t a git paranccsal

 git clone git://github.com/libvips/libvips.git 

A git-ből való építéshez több csomagra van szükség, legalább gtk-doc és gobject-introspection szükséges.

Telepítse a libvips csomagokat a git paranccsal

 ./autogen.sh
make
sudo make install 

Gyorsabb képmegjelenítés C++ API-n keresztül

A libvips könyvtár funkcionalitást biztosít a gyorsabb képalkotáshoz és -manipulációhoz az összes vezető platformon. Néhány vezető képfeldolgozó könyvtár, például az ImageMagick és a GD könyvtárak nagyon erősek, és fejlett funkciókat biztosítanak a képekkel való munkavégzéshez, de nagy mennyiségű memóriára van szükségük a képek feldolgozásához. Másrészt a libvips gyakorlatilag ugyanazokat az aktív műveleteket tudja végrehajtani, mint az ImageMagick, de sokkal gyorsabban és viszonylag kis memóriaterülettel

Kép mentése más támogatott formátumokba

A nyílt forráskódú libvips könyvtár egy sor olyan műveletet kínál, amelyek különféle formátumokban töltik be és mentik a képeket. A könyvtár beépített támogatást tartalmaz a képek mentéséhez olyan népszerű formátumokban, mint a TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF és VIPS. A VipsForeign segítségével különféle formátumokban tölthet be és menthet képeket.

Képek olvasása és írása a memóriába C++ API-n keresztül

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 );
}

Gyorsabb képátméretezés

A nyílt forráskódú libvips könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy menet közben átméretezzék a képeket saját alkalmazásaikban. Először is be kell töltenie a képet a képtárból a képnév és a teljes cím megadásával. Ezt követően igény szerint átméretezheti a megadott szélességre és magasságra. Ezt követően az új mérettel elmentheti a kívánt helyre.

Képek olvasása és írása a memóriába C++ API-n keresztül

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 );
}

Képszűrés C++ API-n keresztül

A képszűrés értékes szolgáltatás, amelyet a különböző képfeldolgozó és számítógépes látási alkalmazásokban használnak szerte a világon. A libvips könyvtár teljes mértékben támogatja a C++ parancsokon keresztüli képszűrést. Az olyan funkciók, mint a simítás, élesítés és éljavítás, néhány példa a szűréssel megvalósított képfeldolgozási műveletekre. A könyvtár PNG-szűrőket is tartalmazott, mint például a bal oldali különbség, balra és felfelé átlag, adaptív, automatikusan kiválasztja a legjobb szomszéd előrejelzőt, és nincs szűrés. Tartalmaz importszűrőket is, amelyek betölthetők a libMagick és az OpenSlide segítségével.

 Magyar