Rust में इमेज प्रोसेसिंग: लाइब्रेरीज़, टूल्स और व्यावहारिक उदाहरण
Rust एक आधुनिक सिस्टम प्रोग्रामिंग भाषा है, जिसका उपयोग ग्राफिक्स और इमेज प्रोसेसिंग से संबंधित कार्यों के लिए तेजी से बढ़ रहा है। उच्च प्रदर्शन, मेमोरी के साथ सुरक्षित कार्य और क्रेट्स की समृद्ध पारिस्थितिकी तंत्र के कारण, Rust इमेज प्रोसेसिंग टूल बनाने के लिए बहुत उपयुक्त है - सरल फॉर्मेट कन्वर्टर्स से लेकर जटिल फिल्टर और कंप्यूटर विज़न एल्गोरिदम तक।
इस लेख में, हम Rust में इमेज प्रोसेसिंग के लिए प्रमुख लाइब्रेरीज़ पर चर्चा करेंगे, उनकी क्षमताओं को समझेंगे और काम करने वाले कोड उदाहरण प्रस्तुत करेंगे।
इमेज प्रोसेसिंग के लिए मुख्य लाइब्रेरीज़
Rust की पारिस्थितिकी तंत्र इमेज प्रोसेसिंग के लिए कई परिपक्व क्रेट्स प्रदान करती है। उनमें से सबसे लोकप्रिय हैं:
- image — इमेज लोड करने, सेव करने और बुनियादी रूपांतरणों के लिए मौलिक लाइब्रेरी। PNG, JPEG, GIF, BMP, ICO, TIFF और अन्य फॉर्मेट को सपोर्ट करती है।
- photon-rs — फोटो फिल्टर और प्रभाव लागू करने के लिए उच्च-प्रदर्शन लाइब्रेरी। Rust और WebAssembly पर काम करती है।
- imageproc — image के लिए एक्सटेंशन, जो उन्नत एल्गोरिदम प्रदान करता है: Hough ट्रांसफॉर्म, सेगमेंटेशन, मॉर्फोलॉजिकल ऑपरेशन।
- rusttype — फॉन्ट के साथ काम करने और इमेज पर टेक्स्ट रेंडर करने के लिए लाइब्रेरी।
इंस्टॉलेशन और कनेक्शन
Cargo.toml फ़ाइल में डिपेंडेंसी जोड़ें:
[dependencies]image = "0.25"photon-rs = "0.3"imageproc = "0.25"इमेज लोड करना, आकार बदलना और सेव करना
एक बुनियादी उदाहरण से शुरू करते हैं — एक इमेज लोड करें, उसे आधा करें और दूसरे फॉर्मेट में सेव करें।
use image::{DynamicImage, GenericImageView, ImageFormat};use std::fs::File;
fn main() -> Result<(), Box<dyn std::error::Error>> { // इमेज लोड करें let img = image::open("input.jpg")?; println!("आकार: {} x {}", img.width(), img.height());
// मूल आकार के आधे पर स्केल करें let resized = img.resize_exact( img.width() / 2, img.height() / 2, image::imageops::FilterType::Lanczos3 );
// PNG फॉर्मेट में सेव करें let mut output = File::create("output.png")?; resized.write_to(&mut output, ImageFormat::Png)?;
println!("तैयार! output.png के रूप में सेव किया गया"); Ok(())}photon-rs के साथ फोटो फिल्टर लागू करना
photon-rs लाइब्रेरी आपको जल्दी से फिल्टर लगाने, रंगों को समायोजित करने और प्रभाव जोड़ने की अनुमति देती है।
use photon_rs::PhotonImage;use photon_rs::transform::resize;use photon_rs::filters::filter;
fn main() { // इमेज खोलें let mut img = photon_rs::open_image("input.jpg");
// "सेपिया" फिल्टर लागू करें filter(&mut img, "sepia", 1.0);
// चमक बदलें photon_rs::channels::brighten(&mut img, 30);
// आकार बदलें let resized = resize(&img, 800, 600, photon_rs::transform::SamplingFilter::Nearest);
// परिणाम सेव करें photon_rs::save_image(resized, "output_photon.jpg"); println!("फिल्टर लागू किया गया, output_photon.jpg में सेव किया गया");}पिक्सल के साथ काम करना और ड्राइंग
कभी-कभी सीधे पिक्सल में हेरफेर करना या प्रिमिटिव ड्रा करना आवश्यक होता है। इसके लिए हम image का उपयोग imageproc के साथ करते हैं।
use image::{RgbImage, Rgb};use imageproc::drawing::draw_filled_circle_mut;
fn main() { // सफेद बैकग्राउंड के साथ 400x300 की खाली इमेज बनाएं let mut img = RgbImage::new(400, 300);
// बैकग्राउंड को हल्के नीले रंग में भरें for pixel in img.pixels_mut() { *pixel = Rgb([200, 220, 255]); }
// लाल गोला बनाएं (x=200, y=150, त्रिज्या=80) draw_filled_circle_mut( &mut img,\