C++ में इमेज के साथ काम करना: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण
डिजिटल इमेज प्रोसेसिंग आधुनिक प्रोग्रामिंग के प्रमुख कार्यों में से एक है। C++ में कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं जो इमेज को लोड करने, संशोधित करने, विश्लेषण करने और सहेजने की अनुमति देती हैं। इस लेख में हम तीन सबसे लोकप्रिय टूल्स पर विचार करेंगे: CImg (हल्की और सरल), OpenCV (कंप्यूटर विज़न के लिए औद्योगिक मानक) और GraphicsMagick (उच्च-प्रदर्शन रूपांतरण के लिए)।
1. CImg — बुनियादी संचालन के लिए हल्की लाइब्रेरी
CImg (The C++ Template Image Processing Library) एक हेडर-ओनली लाइब्रेरी है जिसमें अतिरिक्त DLL स्थापित करने की आवश्यकता नहीं है। यह शैक्षिक परियोजनाओं और त्वरित प्रोटोटाइपिंग के लिए आदर्श है। यह BMP, PNG, JPEG, TIFF फ़ॉर्मेट (बाहरी कोडेक्स के माध्यम से) को सपोर्ट करती है।
स्थापना
बस CImg.h फ़ाइल डाउनलोड करें और इसे प्रोजेक्ट में शामिल करें। JPEG/PNG के साथ काम करने के लिए libjpeg, libpng और zlib की भी आवश्यकता होगी।
उदाहरण: लोडिंग, रंग उलटना और सहेजना
#include "CImg.h"using namespace cimg_library;
int main() { // इमेज लोड करें CImg<unsigned char> img("input.jpg"); // रंग उलटें (पिक्सेल = 255 - पिक्सेल) CImg<unsigned char> inverted = 255 - img; // गॉसियन ब्लर लागू करें (त्रिज्या 3) CImg<unsigned char> blurred = img.get_blur(3); // परिणाम सहेजें inverted.save("inverted.jpg"); blurred.save("blurred.jpg"); return 0;}2. OpenCV — कंप्यूटर विज़न के लिए शक्तिशाली फ्रेमवर्क
OpenCV (Open Source Computer Vision Library) पहचान, ऑब्जेक्ट डिटेक्शन और जटिल इमेज प्रोसेसिंग कार्यों के लिए वास्तविक मानक है। यह सैकड़ों एल्गोरिदम, वीडियो के साथ काम करने और न्यूरल नेटवर्क को सपोर्ट करता है। यह क्रॉस-प्लेटफ़ॉर्म है।
स्थापना
Ubuntu पर: sudo apt install libopencv-dev। Windows पर — vcpkg या आधिकारिक इंस्टॉलर के माध्यम से।
उदाहरण: किनारों का पता लगाना (Canny) और आकार बदलना
#include <opencv2/opencv.hpp>using namespace cv;
int main() { // इमेज पढ़ें Mat img = imread("photo.jpg"); if (img.empty()) return -1; // ग्रेस्केल में रूपांतरण Mat gray; cvtColor(img, gray, COLOR_BGR2GRAY); // Canny एल्गोरिदम द्वारा किनारों का पता लगाना Mat edges; Canny(gray, edges, 50, 150); // आकार बदलकर 300x300 करें Mat resized; resize(img, resized, Size(300, 300)); // सहेजें और दिखाएँ imwrite("edges.jpg", edges); imshow("Original", img); waitKey(0); return 0;}3. GraphicsMagick — तेज़ रूपांतरण और बैच प्रोसेसिंग
GraphicsMagick — ImageMagick का एक फोर्क है, जो स्थिरता और प्रदर्शन पर केंद्रित है। इसका उपयोग बड़े पैमाने पर रूपांतरण, आकार बदलने, वॉटरमार्क के लिए किया जाता है। यह 200 से अधिक फ़ॉर्मेट के साथ काम करता है।
स्थापना
पैकेज मैनेजर के माध्यम से: sudo apt install graphicsmagick। C++ के लिए libgraphicsmagick++-dev लाइब्रेरी की आवश्यकता है।
उदाहरण: इमेज को छोटा करना और PNG में रूपांतरण
#include <Magick++.h>using namespace Magick;
int main() { InitializeMagick(nullptr); // इमेज लोड करें Image image("input.tiff"); // चौड़ाई के अनुसार 800 पिक्सेल तक स्केल करें image.scale(Geometry("800x")); // 90 डिग्री घुमाएँ image.rotate(90); // JPEG गुणवत्ता सेट करें (यदि आउटपुट फ़ॉर्मेट JPEG है) image.quality(85); // PNG में सहेजें image.write("output.png"); return 0;}लाइब्रेरीज़ की तुलना
- CImg — सरल शुरुआत, न्यूनतम