Boost.GIL
โอเพ่นซอร์ส C ++ ไลบรารีรูปภาพทั่วไป
C++ API ที่สรุปการแสดงรูปภาพจากอัลกอริทึม และรองรับการทำงานกับรูปภาพที่เรียบง่ายและซับซ้อน สร้างฮิสโตแกรม คำนวณการไล่ระดับสีของรูปภาพ การบิดและการสุ่มตัวอย่างซ้ำ และอื่นๆ
ภาพเป็นส่วนพื้นฐานของหลายโครงการที่เกี่ยวข้องกับกราฟิกวิดีโอดิจิตอลวิสัยทัศน์คอมพิวเตอร์และการประมวลผลภาพ นอกจากนี้ภาพสามารถแสดงได้หลายวิธี (พื้นที่สีความลึกบิตการสั่งซื้อช่องนโยบายการจัดตําแหน่ง ฯลฯ ) ดังนั้นการทํางานในโครงการที่เกี่ยวข้องกับภาพใหม่ที่สามารถทั่วไปและมีประสิทธิภาพเป็นสิ่งที่ท้าทายมาก บูสท์ทั่วไปห้องสมุดภาพ (IL) เป็นห้องสมุดโอเพนซอร์สที่ช่วยให้ผู้พัฒนาซอฟต์แวร์ความสามารถในการทํางานกับภาพที่เรียบง่ายและซับซ้อนภายใน C++ แอปพลิเคชันของตัวเอง
สิ่งที่ดีเกี่ยวกับห้องสมุด Boost.IL คือการแสดงภาพนามธรรมจากอัลกอริทึมและช่วยให้การเขียนรหัสที่สามารถทํางานบนความหลากหลายของภาพที่มีประสิทธิภาพเทียบกับการเขียนด้วยมือสําหรับประเภทภาพเฉพาะ ดังนั้นจึงทําให้งานของนักพัฒนาได้ง่ายโดยการอนุญาตให้พวกเขาเขียนรหัสครั้งเดียวและมีการทํางานสําหรับประเภทภาพใด ๆ
ห้องสมุด Boost.IL ได้รับการออกแบบให้เป็น TL และ Boost คําชม. อีกแง่มุมที่ดีของห้องสมุดคือความเร็วและความยืดหยุ่น ความเร็วเป็นส่วนสําคัญของการออกแบบห้องสมุด คุณสามารถกําหนดพารามิเตอร์ภาพใด ๆ ในเวลาทํางานสําหรับค่าใช้จ่ายประสิทธิภาพเล็กน้อยเมื่อเทียบกับห้องสมุดอื่น ๆ อีกมากมาย ให้การสนับสนุนสําหรับคุณสมบัติที่สําคัญหลายประการเช่นพิกเซลที่ไม่ใช่ไบต์, การไล่ระดับสีภาพคอมพิวเตอร์, บู๊ทส์รวม, กําหนดช่องไปยังพิกเซลระดับสีเทา, การรวมและการสุ่มตัวอย่าง, และอื่น ๆ.
เริ่มต้นใช้งาน 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.IL ได้ให้การสนับสนุนที่สมบูรณ์สําหรับการดําเนินงานภาพระดับพิกเซลภายใน C++ โปรแกรมของพวกเขาเอง ไลบรารีได้รวมการดําเนินงานที่มีประโยชน์บางอย่างที่ช่วยให้ผู้ใช้สามารถจัดการกับค่าพิกเซล, ตัวชี้พิกเซล, และการอ้างอิงพิกเซล, เช่นการทําสีพิกเซล, การเข้าถึงช่อง, เปรียบเทียบสองช่อง, การสร้าง GB- แผนการสร้าง
แปลงพื้นที่สีเป็นสีเทาผ่าน 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.IL แหล่งเปิดให้โปรแกรมเมอร์ซอฟต์แวร์ความสามารถในการหมุนภาพด้วยเพียงไม่กี่บรรทัดของรหัส Boost.IL สนับสนุนความหลากหลายของฟังก์ชั่นการเปลี่ยนแปลงภาพที่สามารถดําเนินการหมุนตามแกนใด ๆ ภาพพลิกในแนวตั้งหรือแนวนอนดึงภาพย่อยสี่เหลี่ยมใช้การแปลงสี 90 องศาหมุนพิเศษหรือ 270
การเปลี่ยนแปลงภาพผ่าน C++ API
template
void y_gradient(const SrcView& src, const DstView& dst) {
x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
}