منبع باز کتابخانه پردازش سریع تصویر برای 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 کمی نیاز دارد و سریعتر اجرا میشود، بهویژه در ماشینهایی با چندین CPU. این عمدتا به دلیل معماری هوشمندی است که از آن استفاده می کند که به طور خودکار گردش کار تصویر را تقسیم می کند.
این کتابخانه از طیف وسیعی از انواع عددی، از ساده 8 بیتی تا پیچیده 128 بیتی پشتیبانی می کند. اکثر کتابخانههای پردازش تصویر از عملیات رشتهای استفاده میکنند، اما libvips از سوی دیگر رشتهبندی را در سیستم IO تصویر قرار میدهد و یک کپی از کل خط لوله تصویر را به هر رشته برای کار روی آن اختصاص میدهد. این سبک threading افقی باعث استفاده بهتر از حافظه پنهان پردازنده و کاهش قفل می شود.
کتابخانه 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 بارگیری شوند.