Библиотека за по-бърза обработка на изображения с отворен код за C++
Създавайте, манипулирайте, рисувайте, разделяйте, копирайте и конвертирайте популярни формати на изображения; Прилагане на филтри, разделяне на две изображения, решетка на изображение чрез безплатна C++ библиотека.
Libvips е библиотека за усъвършенствана обработка на изображения с отворен код, която използва много малко памет и извършва много бързи операции. Библиотеката може лесно да обработва големи изображения и поддържа прилична гама от файлови формати на изображения, като JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Анализ, NIfTI, DeepZoom и OpenSlide. Може лесно да зарежда изображения чрез ImageMagick или GraphicsMagick, което му позволява да работи с формати като DICOM.
Примитивите libvips се прилагат разумно и някои използват техники като генериране на код по време на изпълнение, което помага за бързата обработка на изображения. В сравнение с други библиотеки за обработка на изображения, беше отбелязано, че libvips се нуждаят от малко RAM и работят по-бързо, особено на машини с множество процесори. Това се дължи главно на интелигентната архитектура, която използва, която автоматично разделя работните процеси на изображенията.
Библиотеката осигурява поддръжка за огромен набор от числови типове, от прости 8-битови int до сложни 128-битови. Повечето от библиотеките за обработка на изображения използват операции с нишки, но libvips, от друга страна, поставя нишките в IO системата на изображението и присвоява копие на целия конвейер на изображения към всяка нишка за работа по него. Този хоризонтален стил на нишки прави по-добро използване на кеш паметта на процесора и намалява заключването.
Библиотеката libvips е библиотека за обработка на изображения, която предлага по-добра производителност от много други библиотеки. Библиотеката е предоставила поддръжка за няколко важни функции за обработка на изображения като рисуване на изображения, разделяне на две изображения, рисуване на кръг върху изображение, копиране на изображение, рисуване на изображение в друго изображение, рисуване на линия върху изображение, кастинг на изображение, кеш изображение, добавяне на две изображения, създаване на гаусово изображение, четене на точка от изображение, решетка на изображение, запазване на изображението в JPEG файл и много други.
Първи стъпки с libvips
Клонирайте най-новите източници, като използвате следната команда.
Инсталирайте libvips чрез команда git
git clone git://github.com/libvips/libvips.git
Изграждането от git се нуждае от повече пакети, ще ви трябват поне gtk-doc и gobject-introspection.
Инсталирайте пакети libvips чрез команда git
./autogen.sh
make
sudo make install
По-бързо изобразяване на изображения чрез C++ API
Библиотеката libvips предоставя функционалност за по-бързо създаване и манипулиране на изображения на всички водещи платформи. Някои от водещите библиотеки за обработка на изображения като библиотеките ImageMagick и GD са много мощни и предоставят разширени функции за работа с изображения, но се нуждаят от голямо количество памет за обработка на изображения. От друга страна, libvips може да прави практически същите активи като ImageMagick, но много по-бързо и със сравнително малък отпечатък на паметта
Запазете изображението в други поддържани формати
Библиотеката с отворен код libvips предоставя набор от операции, които зареждат и записват изображения в различни формати. Библиотеката включва вградена поддръжка за запазване на изображения в популярни формати като TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF и VIPS. VipsForeign може да се използва за зареждане и запазване на изображения в различни формати.
Четете и записвайте изображения в паметта чрез C++ API
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 );
}
По-бързо преоразмеряване на изображението
Библиотеката libvips с отворен код дава на разработчиците на софтуер силата да преоразмеряват изображения в движение в техните собствени приложения. Първо, трябва да заредите изображението от хранилището на изображения, като предоставите име на изображението и пълен адрес. След това можете да го преоразмерите до зададената ширина и височина според вашите нужди. След това можете да го запазите на избраното от вас място с новия размер.
Четете и записвайте изображения в паметта чрез C++ API
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 );
}
Филтриране на изображения чрез C++ API
Филтрирането на изображения е ценна функция, която се използва в различни приложения за обработка на изображения и компютърно зрение по целия свят. Библиотеката libvips осигурява пълна поддръжка за филтриране на изображения чрез C++ команди. Функции като изглаждане, изостряне и подобряване на ръбовете са някои примери за операции за обработка на изображения, реализирани с филтриране. Библиотеката също така включваше PNG филтри като разлика вляво, средна стойност отляво и нагоре, адаптивни, автоматично избиране на най-добрия предиктор за съседи и без филтриране. Той също така включва филтри за импортиране, които могат да се зареждат с libMagick и с OpenSlide.