Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ का उपयोग करके OpenCV में हिस्टोग्राम इक्वलाइज़र कैसे लागू करें?

हिस्टोग्राम एक छवि की गहराई की तीव्रता का प्रतिनिधित्व करता है। उदाहरण के लिए, 8 बिट की रंग गहराई वाली छवि पर विचार करें। इसका मतलब है कि प्रत्येक पिक्सेल में रंग की गहराई 0 से मीन्स 0 से 255 तक हो सकती है। यदि छवि RGB छवि है, तो इसमें लाल, हरा और नीला चैनल है। उदाहरण के लिए, छवि के बिंदु पर केवल लाल है। फिर उस छवि की रंग गहराई लाल चैनल में है, और पिक्सेल का मान 0 से 255 तक भिन्न होगा। 0 का अर्थ लाल नहीं और 255 का अर्थ है अधिक पढ़ें।

हिस्टोग्राम सभी चैनलों और सभी रंगों के लिए इस तरह का परिणाम दिखाता है। पिक्सेल का मान बदलकर, आप कुछ विशिष्ट रंग पिक्सेल की तीव्रता को बदल सकते हैं। उदाहरण के लिए, यदि आप लाल चैनल घनत्व बढ़ाना चाहते हैं, तो आप लाल चैनल का मान बदल सकते हैं।

सबसे पहले, हम एक ग्रे छवि में हिस्टोग्राम इक्वलाइज़र लागू करेंगे। एक धूसर छवि में केवल श्वेत और श्याम शामिल होता है। इसका मतलब है कि केवल एक चैनल है। छवि एक 8-बिट छवि है। इसका मतलब है कि रंग की गहराई 0 से 255 तक भिन्न होती है। 0 का अर्थ सफेद होता है, और 255 का अर्थ काला होता है। निम्नलिखित कोड में, हम एक रंगीन छवि लोड करेंगे और इसे ग्रेस्केल में बदल देंगे। फिर हम पिक्सेल मानों को बराबर करने के लिए OpenCV के 'equalizeHist' फ़ंक्शन का उपयोग करेंगे।

निम्न प्रोग्राम दिखाता है कि OpenCV में हिस्टोग्राम इक्वलाइज़र कैसे लागू किया जाए।

उदाहरण

#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
   Mat original;//Declaring a matrix//
   original = imread("view.jpg");//loading the image
   Mat gray;//declaring a matrix//
   cvtColor(original, gray, COLOR_BGR2GRAY);//converting to grayscale//
   Mat hist;//declaring a matrix//
   equalizeHist(gray, hist);//applying histogram equalizer
   namedWindow("Original");//window for actual image//
   namedWindow("gray");//window for grayscale image//
   namedWindow("histogram");//window for histogram//
   imshow("Original", original);//showing actual image//
   imshow("gray", gray);//showing grayscale image//
   imshow("histogram", hist);//showing histogram effect
   waitKey(0);//wait for keystroke//
   return(0);
}

आउटपुट

C++ का उपयोग करके OpenCV में हिस्टोग्राम इक्वलाइज़र कैसे लागू करें?


  1. सी ++ का उपयोग कर ओपनसीवी में बाइनरी छवि कैसे बनाएं?

    एक द्विआधारी छवि सिर्फ एक डिजिटल छवि है जो दो रंगों, काले और सफेद का प्रतिनिधित्व करती है। इमेज प्रोसेसिंग के नजरिए से, बाइनरी इमेज में दो संभावित मानों वाले पिक्सल होते हैं- शून्य और एक। जब पिक्सेल का मान 0 होता है, तो यह एक शुद्ध काले रंग का प्रतिनिधित्व करता है। जब पिक्सेल का मान 1 होता है, तो इस

  1. सी ++ का उपयोग कर ओपनसीवी में किसी छवि के चैनलों की संख्या की गणना कैसे करें?

    इस विषय में, हम समझेंगे कि किसी छवि के चैनलों की संख्या का पता कैसे लगाया जाए। प्रोग्राम चलाने के बाद, कंसोल विंडो में चैनल का नंबर दिखाया जाएगा। चैनल की संख्या प्राप्त करने के लिए, हमने ओपनसीवी के एक वर्ग का उपयोग किया है जिसका नाम चैनल () है। जब हम इमेज मैट्रिक्स को चैनल () वर्ग के ऑब्जेक्ट के रू

  1. सी ++ का उपयोग कर ओपनसीवी में छवि कैसे लोड और दिखाएं?

    इस विषय में, हम यह निर्धारित करेंगे कि C++ में OpenCV का उपयोग करके छवियों को कैसे लोड और दिखाया जाए। OpenCV में एक छवि लोड करने और दिखाने के लिए निम्नलिखित कार्यों की आवश्यकता होती है। चटाई: मैट कोई फंक्शन नहीं है। यह एक डेटा संरचना है, एक प्रकार का चर। सी ++ में इंट, चार, स्ट्रिंग वेरिएबल प्रकार