Boost.GIL
کتابخانه تصویر عمومی منبع باز C++
C++ API که نمایشهای تصویر را از الگوریتمها انتزاع میکند و از کار با تصاویر ساده و پیچیده پشتیبانی میکند. هیستوگرام ایجاد کنید، گرادیان های تصویر را محاسبه کنید، کانولوشن و نمونه برداری مجدد و غیره.
تصاویر بخش اساسی بسیاری از پروژه های مربوط به گرافیک، ویدئوی دیجیتال، بینایی کامپیوتری و پردازش تصویر هستند. علاوه بر این، تصاویر را می توان به روش های مختلفی نمایش داد (فضای رنگ، عمق بیت، ترتیب کانال، خط مشی تراز و غیره). بنابراین کار بر روی یک پروژه جدید مرتبط با تصویر که می تواند عمومی و همچنین کارآمد باشد، بسیار چالش برانگیز است. Boost Generic Image Library (GIL) یک کتابخانه متن باز است که به توسعه دهندگان نرم افزار این قابلیت را می دهد که با تصاویر ساده و پیچیده در برنامه های C++ خود کار کنند.
نکته مهم در مورد کتابخانه Boost.GIL این است که نمایش های تصویر را از الگوریتم ها انتزاعی می کند و امکان نوشتن کدی را فراهم می کند که می تواند روی تصاویر مختلف با عملکردی قابل مقایسه با دست نویسی برای یک نوع تصویر خاص کار کند. بنابراین کار توسعه دهندگان را با اجازه دادن به آنها برای نوشتن کد یک بار و کارکرد آن برای هر نوع تصویری آسان می کند.
کتابخانه Boost.GIL به عنوان یک تعریف STL و Boost طراحی شده است. یکی دیگر از جنبه های عالی کتابخانه سرعت و انعطاف پذیری است. سرعت بخش کلیدی طراحی کتابخانه بوده است. شما به راحتی می توانید هر پارامتر تصویر را در زمان اجرا با هزینه عملکرد بسیار جزئی در مقایسه با بسیاری از کتابخانه های دیگر تعریف کنید. پشتیبانی از چندین ویژگی مهم مانند پیکسل های غیر بایتی، گرادیان تصویر محاسباتی، ادغام Boosts، اختصاص یک کانال به یک پیکسل در مقیاس خاکستری، کانولوشن و نمونه برداری مجدد و غیره را فراهم می کند.
شروع کار با Boost.GIL
ساده ترین راه برای نصب Boost.GIL استفاده از GitHub است. لطفا از دستور زیر برای نصب راحت استفاده کنید
Boost.GILvia GitHub را نصب کنید.
git clone --https://github.com/boostorg/gil
خواندن و نوشتن تصاویر
هیستوگرام نمایش گرافیکی توزیع تونال در یک تصویر دیجیتال است. در زمینه پردازش تصویر، هیستوگرام یک تصویر معمولاً به هیستوگرام مقادیر شدت پیکسل اشاره دارد. کتابخانه Boost.GIL توسعه دهندگان نرم افزار را قادر می سازد تا با استفاده از کد ++C، هیستوگرام را در داخل برنامه خود ایجاد کنند. می توان آن را با شمارش تعداد مقادیر پیکسلی که در هر سطل قرار می گیرد تولید کرد. همچنین می توانید هیستوگرام درخشندگی تصویر را به راحتی محاسبه کنید.
نوشتن تصویر از طریق C++ API
#define png_infopp_NULL (png_infopp)NULL
#define int_p_NULL (int*)NULL
#include
#include
using namespace boost::gil;
int main()
{
rgb8_image_t img(512, 512);
rgb8_pixel_t red(255, 0, 0);
fill_pixels(view(img), red);
png_write_view("redsquare.png", const_view(img));
}
عملیات تصویر سطح پیکسل با استفاده از C++ API
کتابخانه منبع باز Boost.GIL پشتیبانی کاملی از عملیات تصویر در سطح پیکسل در برنامه های C++ خود ارائه کرده است. این کتابخانه شامل برخی از عملیات مفید است که کاربران را قادر میسازد تا مقادیر پیکسل، اشارهگرهای پیکسل و ارجاعهای پیکسل را مدیریت کنند، مانند رنگآمیزی پیکسل، دسترسی به یک کانال، مقایسه دو کانال، ساختن نشانگر مستطیلی، تبدیل مقدار l خاکستری به RGB. ، و غیره.
تبدیل فضای رنگی به Grayscale از طریق C++
template
void x_luminosity_gradient(SrcView const& src, DstView const& dst)
{
using gray_pixel_t = pixel::type, gray_layout_t>;
x_gradient(color_converted_view(src), dst);
}
تغییر شکل تصویر در برنامه های C++
کتابخانه منبع باز Boost.GIL به برنامه نویسان نرم افزار این امکان را می دهد که تصاویر را تنها با چند خط کد بچرخانند. Boost.GIL از انواع توابع تبدیل تصویر پشتیبانی می کند که می تواند هر چرخش محوری را انجام دهد، تصویر را به صورت عمودی یا افقی برگرداند، یک تصویر فرعی مستطیلی را استخراج کند، تبدیل رنگ را اعمال کند، چرخش های ویژه 90، 180 یا 270 درجه و غیره بر.
تبدیل تصویر از طریق C++ API
template
void y_gradient(const SrcView& src, const DstView& dst) {
x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
}